Gasilska veselica
Gasilci so se kot vsako leto doslej, odločili, da bodo organizirali gasilsko veselico. Ker pa veselica ne sme biti brez igre na srečo, so prosili tebe,
če bi jim lahko pomagal, glede na to, da si programer in bi jim lahko zelo olajšal delo.
Prosili so te, če jim napišeš program, v katerega bodo lahko vnesli število srečk, ki jih želijo prodati.
Program bi naredil toliko srečk kot bi uporabnik vnesel, na vsaki srečki bi bilo 6 številk, naključno izbranih med 1 in 60.
Vse srečke bi bile shranjene v programu in iste takšne bi gasilci dali natisniti in bi jih prodajali na veselici. Ko bi se odločili,
da so prodali približno toliko srečk kot so želeli, bi program izvedel žrebanje šestih števil med 1 in 60. Ta števila bi izpisal,
obenem bi pa tudi izpisal rezultate in sicer izpisal bi koliko je bilo posameznih zadetkov, da bi gasilci vedeli kakšno količino in katere nagrade morajo pripraviti.
class Gasilska_tombola
{
static void Main(string[] args) {
//začetni izpis
Console.WriteLine("\nGASILSKA TOMBOLA - izdelava srečk in vodenje žrebanja");
Console.WriteLine("-------------------------------------------------------\n");
//poziv uporabniku, da vnese število srečk, ki se bodo prodajale
Console.Write("Vnesi število srečk, ki bodo šle v prodajo: ");
//deklariramo spremenljivke in shranimo vnešeno številko
string prebraniNizSreck = Console.ReadLine();
int steviloSreck = int.Parse(prebraniNizSreck);
/*izdelamo dvodimenzionalno tabelo - vrstice bodo posamezne srečke,
*stolpci so številke v srečkah - vsaka srečka ima 6 številk*/
int[,] srecka = new int[steviloSreck + 1, 7]; //steviloSreck + 1, ker bomo nulti index kar "pozabili"
//deklariramo Random razred
Random nakljucnaStevila = new Random();
/*deklariramo spremenljivke, ki jih bomo uporabili, da bomo napolnili tabelo srečk
prvi index[0] "pozabimo"*/
int vrstica = 1;
int stolpec = 1;
//ustvarimo zanko
for (int stevec = 1; stevec <= steviloSreck; stevec++) {
//začnemo polniti tabelo z naključnimi števili
vrstica = stevec;
//žrebamo številke po sklopih in napolnimo tabelo - vsak sklop vsebuje 10 številk
srecka[vrstica, stolpec] = nakljucnaStevila.Next(1, 11);
srecka[vrstica, stolpec + 1] = nakljucnaStevila.Next(11, 21);
srecka[vrstica, stolpec + 2] = nakljucnaStevila.Next(21, 31);
srecka[vrstica, stolpec + 3] = nakljucnaStevila.Next(31, 41);
srecka[vrstica, stolpec + 4] = nakljucnaStevila.Next(41, 51);
srecka[vrstica, stolpec + 5] = nakljucnaStevila.Next(51, 61);
} //konec FOR zanke
Console.WriteLine("\nIzdelano " + steviloSreck + " srečk.");
//prodane so vse srečke, prične se lahko žrebanje
Console.WriteLine("Gasilci so prodali vse srečke, zato pričnejo z žrebanjem.");
//tukaj pride žrebanje številk
Console.WriteLine("\nŽrebane številke");
Console.WriteLine("------------------");
//ustvarimo tabelo, jo napolnimo s števili, ki jih bomo žrebali preko njihovih indeksov
int[] tabelaZrebanja = new int[61];
//jo napolnimo s števili od 1 do 60; 0 kar "pozabimo"
for (int stevecZrebanja = 1; stevecZrebanja <= 60; stevecZrebanja++) {
tabelaZrebanja[stevecZrebanja] = stevecZrebanja;
} //konec FOR zanke
//naredimo še tabelo, kamor bomo shranili rezultate žrebanja
int[] tabelaRezultatov = new int[7]; //0 spet "pozabimo"
//deklariramo spremenljivko
int stevecKoncnegaZrebanja = 1;
//ustvarimo zanko, ki nam "krajša" tabelo in žreba števila
for (int stevecKrajsanjaTabele = 60; stevecKrajsanjaTabele > 54; stevecKrajsanjaTabele--) {
int zacasnoStevilo = nakljucnaStevila.Next(1, stevecKrajsanjaTabele + 1);
//poiščemo to število v tabeli in ga shranimo v tabelo žrebanih številk
tabelaRezultatov[stevecKoncnegaZrebanja] = tabelaZrebanja[zacasnoStevilo];
//na mesto žrebane številke prestavimo zadnjo številko, zanka bo pa samodejno "krajšala" tabelo
tabelaZrebanja[zacasnoStevilo] = tabelaZrebanja[stevecKrajsanjaTabele];
stevecKoncnegaZrebanja++; //zvišamo števec
} //konec FOR zanke
//posortiramo tabelo in izpišemo rezultat žrebanja
Array.Sort(tabelaRezultatov);
for (int stevecIzpisa = 1; stevecIzpisa <= 6; stevecIzpisa++) {
Console.Write(tabelaRezultatov[stevecIzpisa] + " ");
} //konec FOR zanke
//uporabnika obvestimo kaj se dogaja, ker lahko traja, če je veliko srečk
Console.WriteLine("\n\nIščem zadetke ...");
//naredimo tabelo za začasno shranjevanje številk za primerjavo
int[] zacasnaTabela = new int[7]; //pozabimo spet 0
//deklaracija spremenljivk
int zadetekNajden = 0, enZadetek = 0, dvaZadetka = 0;
int trijeZadetki = 0, stirjeZadetki = 0, petZadetkov = 0, sestZadetkov = 0;
//napolnimo začasno tabelo
for (int stevecPrimerjava = 1; stevecPrimerjava <= steviloSreck; stevecPrimerjava++) {
//napolnimo začasno tabelo s posamezno srečko
zacasnaTabela[1] = srecka[stevecPrimerjava, stolpec];
zacasnaTabela[2] = srecka[stevecPrimerjava, stolpec + 1];
zacasnaTabela[3] = srecka[stevecPrimerjava, stolpec + 2];
zacasnaTabela[4] = srecka[stevecPrimerjava, stolpec + 3];
zacasnaTabela[5] = srecka[stevecPrimerjava, stolpec + 4];
zacasnaTabela[6] = srecka[stevecPrimerjava, stolpec + 5];
//resetiramo števec zadetkov
zadetekNajden = 0;
//in izvedemo primerjavo številk s pomočjo zanke foreach
foreach (int zadetek in zacasnaTabela) {
if (Array.IndexOf(tabelaRezultatov, zadetek) != -1) {
zadetekNajden++;
}
}
if (zadetekNajden == 1) {
enZadetek++;
} else if (zadetekNajden == 2) {
dvaZadetka++;
} else if (zadetekNajden == 3) {
trijeZadetki++;
} else if (zadetekNajden == 4) {
stirjeZadetki++;
} else if (zadetekNajden == 5) {
petZadetkov++;
} else if (zadetekNajden == 6) {
sestZadetkov++;
}
} //konec FOR zanke
//končni izpis
Console.WriteLine("\nŠt. srečk z enim zadetkom:\t" + enZadetek);
Console.WriteLine("Št. srečk z dvema zadetkoma:\t" + dvaZadetka);
Console.WriteLine("Št. srečk s tremi zadetki:\t" + trijeZadetki + "\t4. nagrada: 3 porcije golaža");
Console.WriteLine("Št. srečk s štirimi zadetki:\t" + stirjeZadetki + "\t3. nagrada: 3 kg domačih klobas");
Console.WriteLine("Št. srečk s petimi zadetki:\t" + petZadetkov + "\t2. nagrada: odojek");
Console.WriteLine("Št. srečk s šestimi zadetki:\t" + sestZadetkov + "\t1. nagrada: skuter Aprilia");
//počakamo na tipko Enter
Console.ReadLine();
}
}