A következő C++ kódban miért változik át a szmok tömb és a húzott számok tömb egy-egy eleme?
#include <iostream>
#include <cstdlib>
using namespace std;
//szám bekérése és ellenőrzése
int szam_bekeres(int szam)
{
int bevitel;
bool hiba;
do
{
bevitel=0;
hiba=false;
cout << "Kérlek, add meg a(z) " << szam+1 <<". számot!"<<endl;
cin >> bevitel;
if (cin.fail())
{
hiba = true;
cin.clear();
cin.ignore(80,'\n');
}
if (bevitel<1 || bevitel>90)
{
hiba = true;
}
}
while(hiba == true);
return bevitel;
};
//sorsoáli szám generálása (1-89)
int sorsolas()
{
int lottoszam = (rand() % 90) + 1;
return lottoszam;
};
int main()
{
setlocale(LC_ALL, "");
char valasz;
int szamok[5] = {0};
int huzottszamok[4] = {0};
int egyezo [5] = {0};
int szamlalo=0;
bool valaszhiba=false;
do
{
cout << "Kérlek, adj meg 5 számot 1 es 90 között!" << endl;
for (int i = 0; i<5; i++)
{
szamok[i]=szam_bekeres(i);
}
do
{
cout << "A választott számaid a következők: " << szamok[0] <<", " << szamok[1] <<", " << szamok[2] <<", " << szamok[3] <<", " << szamok[4] << "." <<endl;
cout <<"Rendben? (I/N)"<<endl;
cin >> valasz;;
if (cin.fail())
{
valaszhiba = true;
cin.clear();
cin.ignore(80,'\n');
};
if (valasz != 'N' && valasz!= 'I')
{
valaszhiba = true;
};
}
while (valaszhiba == true);
}
while (valasz == 'N');
for (int s=0;s<5;s++)
{
huzottszamok[s] == sorsolas();
// itt lesz vlaamiért a szamok[0] = a huzottszamok[4]
}
cout << "A következő számokat húztak a lottón: " << huzottszamok[0] << "," << huzottszamok[1] << "," << huzottszamok[2] << "," << huzottszamok[3] << "," << huzottszamok[4] << "!"<<endl;
for (int e=0;e<5; e++)
{
for (int h=0;h<5;h++)
{
if (szamok[e] == huzottszamok[h])
{
egyezo[szamlalo] = szamok[e];
szamlalo++;
};
};
};
if (szamlalo>0)
{
cout << "Gratulálok, "<< szamlalo << " számot találtál el: ";
for (int k=0;k<5;k++)
{
if (egyezo[k]!=0)
{
cout << " " << egyezo[k];
};
};
}
else
{
cout << "Sajnálom, egyetlen számot sem találtál el!";
};
return 0;
}
I. A huzottszamok tömb csak 4 elemű, te viszont úgy kezeled, mintha 5 elemű lenne.
II. Mi garantálja, hogy a generált lottószámok nem lesznek azonosak?
Mert a huzottszamok csak négy eleműnek van definiálva.
int huzottszamok[4] = {0};
Amikor az ötödiket húzza, az már következő memóriacímre fog kerül, ahol az egyezo[0] van.
Egyébként miért csak 89-ig generálja a számot, ha bekéréskor a 90-et is elfogadja?
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!