[Lekcja 17] Zadanie pierwsze
Ostatnio zmodyfikowano 2012-04-03 20:54
Vendi Temat założony przez niniejszego użytkownika |
[Lekcja 17] Zadanie pierwsze » 2012-04-02 19:28:10 Witam Podpatrzyłem kod od pana Yeti do tej lekcji i zadania domowego. Czy w tym kodzie if może być wcześniej niż std::cin? I jak to działa bez std::cin.good()? #include <iostream> using namespace std; int wczytajLiczbe() { int a; do { if( cin.good() == false ) { cout << "Czy napewno podales liczbe? " << endl; } cin.clear(); cin.sync(); cin >> a; } while( cin.good() == false ); return a; }
int main() { cout << "Podaj liczbe: "; int liczba = wczytajLiczbe(); cout << "Podales liczbe: " << liczba << endl; return 0; } Z pętlami też tak miałem i teraz mam je w palcu (do..while) po takim samym zabiegu czyli najpierw zobaczenie a później zrozumienie. Kod po prostu jest błędny. |
|
Matti |
» 2012-04-03 20:54:53 Jasne, że może być. Przy pierwszym wczytaniu warunek zostanie pominięty, przy drugim ( o ile będzie ) jest już prawdziwy i wyskakuje stosowny komunikat. Program według mnie jest poprawny w takiej formie.
Bez std::cin.good() nie jesteś w stanie stwierdzić, czy poprawnie wczytałeś liczbę. W tej funkcji jest przechowywana informacja, czy wczytywanie się powiodło. |
|
« 1 » |