Mi a hiba a forráskódba? C++
//main.cpp
# include <iostream>
# include <windows.h>
typedef unsigned short ushort;
using std::cout;
using std::cin;
using std::endl;
int main()
{
ushort *Pin = new ushort;
ushort *Pukk = new ushort;
ushort *Pukk2 = new ushort;
ushort *Bead = new ushort;
ushort *Szamlalo = new ushort;
*Pin = 1234;
*Pukk = 4321;
*Pukk2 = 6789;
*Szamlalo = 3;
*Bead = NULL;
do
{
cout <<"Add meg a PIN-kodot: "; cin >> *Bead;
if(*Bead ==*Pin)
{
cout <<"PIN-kod jo.";
}
else
{
*Szamlalo-= 1;
cout <<"PIN-kod rossz";
if(*Szamlalo > 0){cout << *Szamlalo <<" meg lehetoseged van \n";}
}
while(*Szamlalo == 0)
{
cout <<"add meg a PUKK-kodot: "; cin >> *Bead;
if(*Bead == *Pukk)
{
cout <<"PUKK kod jo ";
*Szamlalo = 1;
else
{
cout <<"PUKK-kod rossz add meg a PUKK2-kodot: "; cin >> *Bead;
if(*Bead == *Pukk2)
{
cout <<"PUKK2-kod jo ";
}
else
{
cout <<"PUKK2-kod rossz,SIM-zarolva. \n"
<<"KILEPES!!!!";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
exit(0);
}
}
}
}
}while(*Szamlalo > 0);
delete ushort Pin;
delete ushort Pukk;
delete ushort Pukk2;
delete ushort Bead;
delete ushort Szamlalo;
cin.get();
return 0;
}
delete Pin;
delete Pukk;
delete Pukk2;
delete Bead;
delete Szamlalo;
Ez a rész javítva de nem jó akkor sem fordul le :(
Már jó de most azt nem értem,hogy miért fut le újból a do while ciklus.
Frissített kód:
//main.cpp
# include <iostream>
# include <windows.h>
typedef unsigned short ushort;
using std::cout;
using std::cin;
using std::endl;
int main()
{
ushort *Pin = new ushort;
ushort *Pukk = new ushort;
ushort *Pukk2 = new ushort;
ushort *Bead = new ushort;
ushort *Szamlalo = new ushort;
*Pin = 1234;
*Pukk = 4321;
*Pukk2 = 6789;
*Szamlalo = 3;
*Bead = NULL;
do
{
cout <<"Add meg a PIN-kodot: "; cin >> *Bead;
if(*Bead ==*Pin)
{
cout <<"PIN-kod jo.";
*Szamlalo = -100;
}
else
{
*Szamlalo-= 1;
cout <<"PIN-kod rossz";
if(*Szamlalo > 0){cout <<" meg "<< *Szamlalo <<" lehetoseged van \n";}
}
while(*Szamlalo == 0)
{
cout <<"add meg a PUKK-kodot: "; cin >> *Bead;
if(*Bead == *Pukk)
{
cout <<"PUKK kod jo ";
*Szamlalo = 1;
}
else
{
cout <<"PUKK-kod rossz add meg a PUKK2-kodot: "; cin >> *Bead;
if(*Bead == *Pukk2)
{
cout <<"PUKK2-kod jo ";
}
else
{
cout <<"PUKK2-kod rossz,SIM-zarolva. \n"
<<"KILEPES!!!!";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
Sleep(500);cout <<".";
exit(0);
}
}
}
}while(*Szamlalo > 0);
delete Pin;
delete Pukk;
delete Pukk2;
delete Bead;
delete Szamlalo;
cin.get();
return 0;
}
Nekem jól működik. //Visual studioban futtatva.
Bekéri a kódot, majd hogyha elrontom a pint, kéri a két pukk kódot és kilép.
Igen de nézd meg jobban ha jól adod meg a pin kódot akkor megint megy újra az egész.
A jó pin-t megadva ki kellene,hogy lépjen a do while ciklusból de nem teszi.
Miért?
Azért nem lép ki,mert ushort -ot használsz. Az ushort előjel nélküli 16 bites integer.
cout <<"PIN-kod jo.";
*Szamlalo = -100; //Ez nem -100
Így a *szamlalo > 0 feltétel teljesül,ezért nem lép ki.
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!