Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 17] Zadanie pierwsze

Ostatnio zmodyfikowano 2012-04-03 20:54
Autor Wiadomość
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()?
C/C++
#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.
P-53736
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.
P-53805
« 1 »
  Strona 1 z 1