Problem z 'std::cin.good()'
Ostatnio zmodyfikowano 2010-07-15 16:36
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: #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 |
|
malan |
» 2010-07-15 16:31:11 if( cin.good() ) { Srednia += ocena; ile++; if( ocena == 0 ) { cout << "Srednia to " << Srednia /( ile - 1 ); petla = true; } } else { cout << "zle"; std::cin.sync(); } |
|
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! |
|
« 1 » |