Zadanie domowe rozdział 3.4 cin.good()
Ostatnio zmodyfikowano 2016-03-29 16:23
pekan Temat założony przez niniejszego użytkownika |
Zadanie domowe rozdział 3.4 cin.good() » 2016-03-29 15:00:06 Napisałem program program, który przyjmuje imię nazwisko i wiek a następnie je wypisuje. W przypadku podania nieprawidłowych wartości zmiennych program ma prosić o inną wartość jednak std::cin.good() zawsze przyjmuje wartość 1.Chciałem więc prosić o pomoc. #include <iostream> #include <string> void wczytajosobe( std::string t[], std::string t2[], int t3[], int roz ) { for( int i = 0; i < roz; i++ ) { do { std::cout << "Podaj imie" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> t[ i ]; } while( std::cin.good() == 0 ); do { std::cout << "Podaj nazwisko" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> t2[ i ]; } while( std::cin.good() == 0 ); do { std::cout << "Podaj wiek" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> t3[ i ]; } while( std::cin.good() == 0 ); } } void wypiszosobe( std::string t[], std::string t2[], int t3[], int roz ) { int i = 0; do { std::cout << "Imie " << t[ i ] << " Nazwisko " << t2[ i ] << " Wiek " << t3[ i ] << std::endl; i++; } while( i < roz ); } int main() { std::string imie[ 2 ]; std::string nazwisko[ 2 ]; int wiek[ 2 ]; int roz = 2; wczytajosobe( imie, nazwisko, wiek, roz ); wypiszosobe( imie, nazwisko, wiek, roz ); return 0; }
|
|
carlosmay |
» 2016-03-29 16:00:04 Dla wczytywania łańcucha nie ma sensu sprawdzanie, bo std::string przechowuje znaki (litery, cyfry i inne znaki). Co by nie wpisać to się zapisze. Sprawdzanie dla typów liczbowych tak. |
|
pekan Temat założony przez niniejszego użytkownika |
» 2016-03-29 16:23:28 OK, dzięki.
|
|
« 1 » |