Kezdőoldal » Számítástechnika » Programozás » A következő C++ kódban miért...

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?

Figyelt kérdés

#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;

}



2016. nov. 12. 23:40
 1/5 uno20001 ***** válasza:

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?

2016. nov. 13. 00:00
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

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?

2016. nov. 13. 00:01
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:
Akkor azt a részét jól gondoltam ,hogy a memóriacím csúszik el. Ezek szerint azt toltam el, hogy a tömb létrehozásakor nem a tömbben szereplő számok mennyiségét, hanem az utolsó indexet írtam be (pl.: 5 elemre tombb[4], mert én kis buta úgy gondoltam ,hogy 0-4-ig megy az index, és így is kell deklarálni :()
2016. nov. 13. 00:05
 4/5 A kérdező kommentje:
A kizárásokat mind a felhasználói oldalon, mind a random generálás részéről meg fogom csinálni, de addig még ne mjutottam el, mert a tömbökkel bajlódtam.
2016. nov. 13. 00:06
 5/5 A kérdező kommentje:
Oké, most már minden úgy meg,y ahogy kell, ksözönöm a segítséget, jó nagy butaságot csináltak :D
2016. nov. 13. 00:15

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!