Kezdőoldal » Számítástechnika » Programozás » Ezen C++ do-while példájának...

Ezen C++ do-while példájának ebben az utasításában: hiba = hiba || tmp. Size ()! =0 || n<0; miért szerepel a tmp. Size ()! =0 kifejezés? Van olyan eset, amikor a cin. Fail () false-t ad vissza, de mégis van valami az input bufferben?

Figyelt kérdés

int n;

bool hiba = false;

do{

cout << "Adjon meg egy pozitív egész számot ";

cin >> n;

hiba = cin.fail();

if(hiba) cin.clear();

string tmp; getline(cin,tmp,'\n');

hiba = hiba || tmp.size()!=0 || n<0;

if(hiba) cout << "Hibás adat!" << endl;

}while(hiba);



2017. júl. 7. 04:22
 1/5 A kérdező kommentje:

A példa ennek a dokumentumnak a hatodik oldaláról származik (bár ha minden igaz, ott van benne egy fölösleges kapcsos zárójel).

[link]

2017. júl. 7. 04:23
 2/5 A kérdező kommentje:

A példának egyébként az a lényege, hogy addig kér be a felhasználótól egy értéket, amíg a felhasználó nem pozitív vagy 0-t ad meg. És kezeli azt is, ha nem szám értéket ad meg a felhasználó (ekkor ad true értéket a cin.fail() tagfüggvény.

Az input buffert azért kell manuálisan üríteni, mert különben végtelen ciklusba keveredne a program, ha a felhasználó nem szám típusú értéket (pl. szöveget) adna meg a bekéréskor.

2017. júl. 7. 04:26
 3/5 anonim ***** válasza:

"Van olyan eset, amikor a cin. Fail () false-t ad vissza, de mégis van valami az input bufferben?"

Van olyan eset, amikor nem?

2017. júl. 7. 08:33
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
A kérdésedre a válasz például az az eset, amikor a felhasználó a feltételeknek megfelelő értéket ad meg :)
2017. júl. 7. 14:15
 5/5 A kérdező kommentje:
Egyébként közben megkaptam a választ. Például ha a felhasználó azt adja meg, hogy 33a, akkor a 33 értékül lesz adva az n változónak, az a-t pedig egy további bekérésnek passzolja tovább a program (hiba nélkül). Erre szolgál a tmp.size()!=0 kifejezés, hogy ezt az eshetőséget is hibának tekintse a program.
2017. júl. 7. 14:17

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!