Zadanie domowe z cpp0x - obsługa strumienia wyjścia

Zadanie domowe z cpp0x - obsługa strumienia wyjścia
Kooneer
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zabrze
  • Postów: 47
0

Cześć, mam problem z zadaniem ze strony Cpp0x. Chodzi o te:
Napisz program, który wczyta trzy liczby rzeczywiste, a na końcu programu je wszystkie wypisze. Zadbaj o to, by bufor strumienia wejściowego był za każdym razem czyszczony. Wynik końcowy powinien również zawierać informacje czy wczytanie danej liczby się powiodło.

Chodzi o to, że mój kod nie działa jak powinien. Zawsze leci "1" po cin.good();, a powinno "0", jeśli wpiszemy literę.

Stąd: http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Obsluga-strumienia-wejsciowego/12

Kopiuj
#include <iostream>

using namespace std;

int Czysc()
{
    cin.clear();
    cin.sync();
}

int main()
{
    float a;
    float b;
    float c;

    cout << "Podaj liczbe a: ";
    cin >> a;
    Czysc();
    cout << "\nPodaj liczbe b: ";
    cin >> b;
    Czysc();
    cout << "\nPodaj liczbe c: ";
    cin >> c;
    Czysc();
    cout << "Liczba a to: " << a;
    cout << cin.good();
    cout << "\nLiczba b to: " << b;
    cout << cin.good();
    cout << "\nLiczba c to: " << c;
    cout << cin.good();
    return 0;
}
MK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
1

Sprawdzaj cin.good() po wczytaniu czegoś, nie po wczytaniu i wyczyszczeniu flag.

Kooneer
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Zabrze
  • Postów: 47
0

Zrobiłem coś takiego i działa. Da się tu coś poprawić?

Kopiuj
 int main()
{
    float a;
    float b;
    float c;
    bool a_status;
    bool b_status;
    bool c_status;

    cout << "Podaj liczbe a: ";
    cin >> a;
    a_status = cin.good();
    Czysc();
    cout << "\nPodaj liczbe b: ";
    cin >> b;
    b_status = cin.good();
    Czysc();
    cout << "\nPodaj liczbe c: ";
    cin >> c;
    c_status = cin.good();
    Czysc();
    cout << "Liczba a to: " << a;
    cout << " Wczytano? " << a_status;
    cout << "\nLiczba b to: " << b;
    cout << " Wczytano? " << b_status;
    cout << "\nLiczba c to: " << c;
    cout << " Wczytano? " << c_status;
    return 0;
}
Majkello
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Spróbuj wyczyścić przed wpisywaniem zmiennej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.