Kezdőoldal » Számítástechnika » Programozás » Miért működik rosszul a program?

Miért működik rosszul a program?

Figyelt kérdés

//main.cpp

#include<iostream>

#include<cstdlib>

using std::cout;

using std::cin;


int main(){

srand(time(0));

unsigned short szamok[80];

unsigned short hanySzammalJatszok;


for(unsigned short i = 0; i < 80; ++i)

szamok[i] = i+1;


do{

cout << "Hany szammal jatszol(1-7): ";

cin >> hanySzammalJatszok;

if((hanySzammalJatszok < 1) || (hanySzammalJatszok > 7))

cout << "1 tol kisebb es 7 tol nagyobb szammal nem jatszhatsz\n";

else

break;

}while(1);


unsigned short nyeroSzamaid[hanySzammalJatszok];

for(unsigned short i = 0; i < hanySzammalJatszok; ++i)

nyeroSzamaid[i] = 0;


for(unsigned short i = 0, temp; i < hanySzammalJatszok; ++i){

cout << i+1 << " nyeroszamod(1-80): ";

cin >> temp;

if((temp < 1) || (temp > 80)){

cout << "Csak 0 es 81 kozotti szamokat adhatsz be!\n";

--i;

}

else{

for(unsigned short j = 0; j < i+1; ++j){

if(nyeroSzamaid[j] == temp){

cout << "Nem adhatsz be ket ugyanolyan szamot!\n";

--i;

break;

}

}

nyeroSzamaid[i] = temp;

}

}



return 0;

}


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

Ezzel a résszel van gond:

Az a baj,hogy valamikor bele enged tenni olyan értéket is a nyeroSzamaid tömmbe amik már vannak benne.

Mi lehet a baj:


for(unsigned short i = 0, temp; i < hanySzammalJatszok; ++i){

cout << i+1 << " nyeroszamod(1-80): ";

cin >> temp;

if((temp < 1) || (temp > 80)){

cout << "Csak 0 es 81 kozotti szamokat adhatsz be!\n";

--i;

}

else{

for(unsigned short j = 0; j < i+1; ++j){

if(nyeroSzamaid[j] == temp){

cout << "Nem adhatsz be ket ugyanolyan szamot!\n";

--i;

break;

}

}

nyeroSzamaid[i] = temp;

}

}


2012. dec. 30. 21:59
 1/2 anonim ***** válasza:
Talán érdemesebb lenne halmazt használni, vagy a tömbhötz írni egy függvényt, ami rendezi és kiszűri a duplikátumokat.
2012. dec. 30. 22:04
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

kijavítottam:

for(unsigned short i = 0, temp; i < hanySzammalJatszok; ++i)

{

cout << i+1 << " nyeroszamod(1-80): ";

cin >> temp;

if((temp < 1) || (temp > 80))

{

cout << "Csak 0 es 81 kozotti szamokat adhatsz be!\n";

--i;

}

else

{

bool voltMarIlyenSzam = false;

for(unsigned short j = 0; j < i+1; ++j)

{

if(nyeroSzamaid[j] == temp)

{

cout << "Nem adhatsz be ket ugyanolyan szamot!\n";

--i;

voltMarIlyenSzam = true;

break;

}

}

if(voltMarIlyenSzam == false)

nyeroSzamaid[i] = temp;

}

}

2012. dec. 30. 22:20

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!