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