Lekcja 26 - zabezpieczenie
Ostatnio zmodyfikowano 2014-01-09 20:28
Duninho Temat założony przez niniejszego użytkownika |
Lekcja 26 - zabezpieczenie » 2014-01-09 19:59:18 #include <iostream> #include <string>
using namespace std;
void wczytajOsobe( string & imie, string & nazwisko, int & wiek, int i ) { cout << "Dane osoby " << i + 1 << "." << endl; cout << "Podaj imie:"; getline( cin, imie ); cin.clear(); cout << "Podaj nazwisko:"; getline( cin, nazwisko ); cin.clear(); do { cin.sync(); cin.clear(); cout << "Podaj wiek:"; cin >> wiek; } while( cin.fail() == 1 ); }
void wypiszOsobe( string imie, string nazwisko, int wiek, int i ) { cout << endl << "Dane osoby " << i + 1 << "." << endl; cout << "Imie: " << imie << endl; cout << "Nazwisko: " << nazwisko << endl; cout << "Wiek: " << wiek << endl; }
int main() { string imie[ 2 ]; string nazwisko[ 2 ]; int wiek[ 2 ]; for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i ); for( int i = 0; i < 2; i++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ], i ); return 0; }
Pętla sprawdzająca poprawność wpisania wieku wykonuje się bez końca ignorując cin >> wiek Normalnie pętla ta działa dobrze w innych przykładach albo ja już trace zmysły. W każdym razie, prosiłbym o pomoc i wytłumaczenie/skierowanie na dobrą drogę. Pozdrawiam. |
|
leon_w |
» 2014-01-09 20:28:58 Najpierw czyść flagi błędu, później czyść bufor strumienia. |
|
« 1 » |