Nyerő számok összehasonlítása a kisrolsoltakkal?
a programom random kisorsol annyi 1 és 45 számból álló 6 számjegyű sort, amennyit kérek tőle ( Hatos lottó ), plusz még egyet, ami a nyertes szám lesz. Van rá egy programom, ami megcsinálja mindezt, viszont a találatok számát nem tudom meghatározni. Ebben kérnék segítséget.
void computerGenerator() // megkerem a gepet, hogy generaljon le nekem random szamokat
{
int array[6]={0};
int arrlen,nyer=0;
arrlen = sizeof(array)/sizeof(int);
for(int x=-1; x < arrlen; x++ )
{
array[x] = (int) rand()%45;
for(int y=-1; y<x; y++)
{
if (array[y] == array[x])
{
array[x] = (int) rand()%45; // eggyezes eseten uj szamot generalok
y=-1;
//nyer++; ?????
} //if()
} //for (y)
} //for (x)
cout <<" "<<endl;
system("COLOR 04");
cout <<"\t\t\t\t\t\xDB " <<nyer<<" \xDB"<<endl;
// bubi rendezes, mert miert ne
for(int y=-1; y < arrlen-1; y++ )
{
for(int x=-1; x < arrlen-1; x++ )
{
if (array[x] > array[x+1])
{
int temp;
temp = array[x];
array[x] = array [x+1];
array [x+1] =temp;
} //
} //
} //
sorKiiras(array);
} // veget er a generator
void nyeroSzamok() // Legenegaljuk a nyero szamokat
{
int array[6]={0};
int hossz,nyer=0;
hossz = sizeof(array)/sizeof(int);
for(int x=0; x < hossz; x++ )
{
array[x] = (int) rand()%45;
for(int y=0; y<x; y++)
{
if (array[y] == array[x]) // ugyanazt a szamot nem generaljuk le megint
{
array[x] = (int) rand()%45; // kerek masik szamot
y=0;
//nyer++;
} //if()
} //for (y)
} //for (x)
//cout <<" "<<nyer<<endl;
// rendezes
/** Ettol a programtol megszolalt a koliban a tuzriaszto*/
for(int y=0; y < hossz-1; y++ )
{
for(int x=0; x < hossz-1; x++ )
{
if (array[x] > array[x+1])
{
int temp;
temp = array[x];
array[x] = array [x+1];
array [x+1] =temp;
} // if
} // for
} // for
cout<<"\n\nA nyero szamok: "<<endl;
cout<<"--- ------- ----- ------- ---- "<<endl;
sorKiiras(array);
} // generalas vege
void sorKiiras(int*arrpt) // vege a sor kirasanak
{
for (int x=0; x<6; x++)
{
cout<<" "<< arrpt[x];
}
cout<<" "<<endl;
}
Szia.
1. A legegyszerübbb fapados módszer : két ciklusban minden nyerőszámot összehasonlitasz minden kisorsolt számmal. (Ilyenkor talán még rendezni sem kell)
Sorbarendezed a kihúzott (beadott) számokat, illetve a nyerőszámokat is sorbarendezed.
Aztán innentől kezdve nagyon sok megoldás van arra, hogy megállapitsd azt, hogy hány darab nyerőszám van :
2. Berakod a nyerőszámokat egy halmazba (nem tudom hogyan van a C-hez közeli nyelvekben a halmaz) és egy sima IF-el megvizsgálod, hogy van-e találat a kisorsolt számokból a halmazban (1 ciklus)
3. Ugyanilyen halmaz helyettesitésre alkalmas, hogy a nyerőszámokat átrakod egy stringbe egy elválasztókarakterrel (mind az 6-ot : pl. 1,15,25,35,36,40, ) és a kisorsolt számokat pedig keresed a stringben. 2x1 ciklus.
4. A sorbarendezés miatt simán lehet lépkedni a kisorsolt illetve a nyerő számok listájában (1 ciklus illetve két pozició) feltetellel eldöntöd, hogy éppen melyiket kell léptetni. A kisorsolt számok kozöt, vagy a nyerőszámok között vagy találat esetén mindkettőt.
Sok sikert.
üdv.
Szétszedtem pár függvényre és eljárásra a jobb áttekinthetőség érdekében:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!