Mám v programu následující kód:
void pocitani()
{
double cislo;
cout << "cislo: ";
cin >> cislo;
cout << endl << "Vypocet:" << cislo << " pozadovany rozmer = " << cislo * 15,4 << " cm";
}
Má vynásobit zadané číslo x 15,4.
Problém je, že když se překliknu a zadám místo čísla písmeno, tak se program zasekne. Vím, že se to dělá nějak přes cin.error, ale netuším jak. Zkouším různé možnosti a pořád nic.
Fórum › C / C++
Int vs. char, chyba programu
nastuduj si neco o cin...
ma to vnitrni stavy.. a pokud nastane chyba -- coz nacitani znaku do int je -- tak se zablokuje dokud ho programator neodblokuje
na co hlidat chyby...
To volnaduse : cin.error() pro zjisteni ze doslo k chybe
cin.clear() pro zruseni chyboveho stavu.. a pak minimalne nacist jeden znak aby ses pak nepokusil za moment o to same
Když dám toto, a zadám místo čísla písmeno a dám enter, tak mi naběhne hlavní nabídka programu, ale bez jakékoli hlášky chyba a ještě k tomu naběhne 2x za sebou
void pocitani()
{
double cislo;
cout << "cislo: ";
do{
cin >> cislo;
if(cin.fail())
{
cout << "Chyba! " << endl;
cin.clear();
}
}while(false);
cout << endl << "Vypocet:" << cislo << " pozadovany rozmer = " << cislo * 15,4 << " cm";
}
"a pak minimalne nacist jeden znak aby ses pak nepokusil za moment o to same "
to nevím, co tím myslíš
jen tak mimochodem, programováním a c++ vůbec se zabývám 14 dní, takže polovinu věcí, co mi tu radíte, vůbec nechápu, nejlíp se učím na příkladech
kdyz posles misto cisla treba znaky.. tak to skonci failem .. no jo jenze ty znaky se nikam nezahodi.. proste zustanou na vstupu cin.. takze pokud nastavis cin.clear() a nezbavis se tech znaku .. tak ses tam kdes byl protoze znaky zustaly a ty se znova pokousis o nacteni cisla
Teď nevím toto - když mám tenhle kód, tak po zadání písmene se napíše chybová hláška a najede mi úvodní nabídka programu, akorát 2x za sebou. To už fakt nevím.
void pocitani()
{
double cislo;
cout << "cislo: ";
cin >> cislo;
do{
if(cin.fail())
{
cout << "Chyba! " << endl;
cin.clear();
}
else
cout << endl << "Vypocet:" << cislo << " pozadovany rozmer = " << cislo * 15,4 << " cm";
}while(false);
}
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Char na int — založil vollf82
Int na char — založil filEPina
Prevod pole char na int — založil Jurko
Načtení vstupu, char+int dohromady — založil Levin
Přidání řetězce do ListBoxu (int to char) — založil polarkac
Moderátoři diskuze