2021. május 25., kedd

Lottósorsolás C-Sharp

Ismétlés!

Ha számokat szeretnénk randomolni az ötös lottóhoz, lottó esetén nem lehetnek azonos számok. Mivel tudjuk, hogy ha olyan számot generálunk, ami már szerepelt, akkor nem növekszik a halmaz mérete. 

Példa:

Random r = new Random();
HashSet<int> lottószámok = new HashSet<int>();
while (lottószámok.Count < 5) {
 lottószámok.Add(r.Next(0, 91));
}
Console.WriteLine("A sorsolt lottószámok: ");
foreach (int item in lottószámok) {
 Console.Write(item + ", ");
}


Készítsünk konzol programot, mely előállítja egy lottó sorsolás számait!

Magyarázat: A számokat első megközelítésben nem kellene tárolnunk, de természetesen a Lottó számok nem ismétlődhetnek.

Magyarázat: Ezt a feltételt a programunk csak úgy tudja teljesíteni, ha összehasonlítja az éppen generált számot a korábban előállított számok mindegyikével. Amennyiben talál egyezést, úgy a számot újra generálja. Ehhez a megoldáshoz mindenképpen valamilyen vektor típusú adatszerkezetet kell használnunk.

--------------

Bekér egy 5 elemű tömböt a felhasználótól. A számok itt is 1 és 90 közé eshetnek. (ezt a
programnak figyelnie is kell, valamint azt is, hogy a megadott szám 1 és 90 közé essen).
Ez a tömb a felhasználó által megadott tippeket tartalmazza.
 Feltöltés után a tömb elemeit a program írja ki a képernyőre!
 Rendezze a program a két tömb elemeit emelkedő sorrendbe!
 Vizsgálja meg a program, hogy hány találatot ért el a felhasználó, majd írja ki azt.
 Írja ki a program emelkedő sorrendben a felhasználó által adott tippeket illetve a nyerő
lottószámokat is.


static void Main(string[] args)
 {
 Random rnd = new Random();
 //Nyerő számok generálása
 int[] nyero = new int[5];
 int cv = 0;
 while (cv < 5)
 {
 int aktszam = rnd.Next(90) + 1;
 bool vane = false;
 for (int i = 0; i<cv; i++) if (nyero[i] == aktszam) vane = true;
 if (vane == false)
 {
 nyero[cv] = aktszam;
cv = cv + 1;
 }
 }



//Felhasználó számainak bekérése
 int[] felh = new int[5];
 Console.WriteLine("Kérem adja meg a tippeket!");
 cv = 0;
 while (cv < 5)
 {
 Console.WriteLine();
 Console.Write("Kérem a {0}. számot: ", cv+1);
 int aktszam = int.Parse(Console.ReadLine());
 bool vane = false;
 for (int i = 0; i < cv; i++) if (felh[i] == aktszam) vane = true;
 if (vane == false)
 {
 if ((aktszam >= 1) && (aktszam <= 90))
{
 felh[cv] = aktszam;
cv = cv + 1;
 }
else Console.WriteLine("A megadott szám nem megfelelő
Lottószám!");
 }
 else Console.WriteLine("Ezt a számot már megadta egyszer!");
 }
- 19 -
 //Nyerő számok rendezése
 for (int i = 0; i < 5 - 1; i++)
 {
 for (int j = i + 1; j < 5; j++)
 {
 if (nyero[j] < nyero[i])
{
 int c = nyero[i];
nyero[i] = nyero[j];
nyero[j] = c;
 }
 }
 }
 //Felhasználó számainak rendezése
 for (int i = 0; i < 5 - 1; i++)
 {
 for (int j = i + 1; j < 5; j++)
 {
 if (felh[j] < felh[i])
 {
 int c = felh[i];
felh[i] = felh[j];
felh[j] = c;
 }
 }
 }
 //Találatok keresése
 int talalat = 0;
 for (int i = 0; i < 5; i++)
 {
 for (int j = 0; j < 5; j++)
 {
 if (felh[i] == nyero[j]) talalat = talalat + 1;
 }
 }
 //Kiiratás
 Console.WriteLine();
 Console.WriteLine("A találatok száma: {0}", talalat);
 Console.WriteLine("A nyrő számok: ");
 foreach (int i in nyero) Console.Write("{0}, ", i);
 Console.WriteLine();
 Console.WriteLine("A felhasználó számai: ");
 foreach (int i in felh) Console.Write("{0}, ", i);
 Console.ReadKey();
 }




















https://www.webotlet.hu/?p=1814

Nincsenek megjegyzések:

Megjegyzés küldése