Wczytywanie tekstu
Ostatnio zmodyfikowano 2014-12-22 23:31
legionista Temat założony przez niniejszego użytkownika |
Wczytywanie tekstu » 2014-12-22 21:37:34 Witam próbuje zrobić zadanie z lekcji 26, jednak pętla w przypadku źle podanego wieku nie działa #include<iostream> #include<string> void wczytajOsobe( std::string & imie, std::string & nazwisko, int & wiek ) { std::cout << "Podaj imie osoby" << std::endl; std::cin >> imie; std::cout << "Podaj nazwisko osoby" << std::endl; std::cin >> nazwisko; do { std::cout << "Podaj wiek osoby" << std::endl; std::cin.sync(); std::cin.clear(); std::cin >> wiek; } while( std::cin.good() ); } int main() { std::string imie[ 2 ]; std::string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; }
|
|
wilkoo13 |
» 2014-12-22 21:44:20 Pętla się wykonuje gdy jest true, czyli w tedy gdy dobrze wprowadzisz. good zamień na fail lub przed warunkiem wstaw ! aby zanegować. |
|
Rashmistrz |
» 2014-12-22 21:57:08 } while( std::cin.good() ); Pętla powinna się powtarzać gdy ktoś wpisze poprawną liczbę? ymmm... chyba nie. |
|
legionista Temat założony przez niniejszego użytkownika |
» 2014-12-22 22:18:11 Po zmianie } while( std::cin.fail() ); pętla wykonuje się bez przerwy przy podaniu błędnej wartosci wieku |
|
wilkoo13 |
» 2014-12-22 22:21:06 Zamień kolejnością sync oraz clear. Zamieniłem i działa. Ale jakby mi mógł wyjaśnić ktoś dlaczego kolejność ma znaczenie??? |
|
legionista Temat założony przez niniejszego użytkownika |
» 2014-12-22 22:55:15 Dzięki wielkie, też chciałbym wiedzieć czemu miało to znaczenie. |
|
Monika90 |
» 2014-12-22 23:31:22 Jeżeli strumień jest w stanie fail to operacje wejścia/wyjścia nie są wykonywane. To znaczy wywołanie funkcji sync() zostanie przez strumień zignorowane. clear() przywraca stan good w którym operacje wykonywane są normalnie. |
|
« 1 » |