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

Problem z 'std::cin.good()'

Ostatnio zmodyfikowano 2010-07-15 16:36
Autor Wiadomość
8296425
Temat założony przez niniejszego użytkownika
Problem z 'std::cin.good()'
» 2010-07-15 15:31:32
Witam
Chcialem napisac program obliczajacy srednia ocen. Uzytkownik mial podawac oceny dotad az wpisze cyfre 0. Kod wyglada tak:
C/C++
#include <iostream>
#include <conio.h>
int main() {
    using namespace std;
    int ocena, ile = 0;
    float Srednia = 0;
    bool petla = false;
    while( petla == false ) {
        cin >> ocena;
        if( cin.good() ) {
            Srednia += ocena;
            ile++;
            if( ocena == 0 ) {
                cout << "Srednia to " << Srednia /( ile - 1 );
                petla = true;
            }
        }
        else cout << "zle";
       
    }
    getch();
    return 0;
}
Program oblicza srednia i dziala poprawnie z wyjatkiem jednego. Gdy wpisze w strumieniu co innego niz liczbe powinien raz wyswietlic "zle" i przejsc znowu do petli while bo przeciez petla dalej = false... Tymczasem gdy wpiszemy znak inny od liczby wyswietla w nieskonczonosc "zle". Juz trace nerwy z tym, Blagam, pomozcie
P-19893
malan
» 2010-07-15 16:31:11
C/C++
if( cin.good() )
{
    Srednia += ocena;
    ile++;
    if( ocena == 0 )
    {
        cout << "Srednia to " << Srednia /( ile - 1 );
        petla = true;
    }
} else
{
    cout << "zle";
    std::cin.sync();
}
P-19894
8296425
Temat założony przez niniejszego użytkownika
» 2010-07-15 16:36:22
ufff, w koncu sie udalo, dzieki Malan za pomoc.
Zapomniales tylko o cin.clear() nad cin.sync(), ale dobrze mnie nakierowales. Na prawde wielkie dzieki za pomoc!
P-19895
« 1 »
  Strona 1 z 1