Napisałem program - Jego zadaniem jest spytać użytkownika o imię, nazwisko i wiek dwóch osób.
Problemy w sumie są 2.
- Imie i nazwisko
- Wyświetla się : Podaj imie
- Wpisujemy dowolny zestaw znaków np. rtbk34
- Nic się nie wyświetla; wpisujemy ponownie // <--- Błąd jest tutaj
*Analogicznie przy podawaniu nazwiska
- Wiek
- Wyświetla się: Podaj wiek:
- Podajemy dowolny zestaw liter ( przy podaniu liczby działa normalnie )
- Wyświetla się: Podaj wiek: Podaj wiek: // <--- Błąd jest tutaj
- Podajemy dowolny zestaw liter
- Wyświetla się: Podaj wiek:
- Podajemy dowolny zestaw liter
- Wyświetla się: Podaj wiek:
- (...)
Kod wygląda tak:
#include <iostream>
#include <string>
using namespace std;
int wczytajOsobe( string & imie, string & nazwisko, int & wiek )
{
do
{
cout << "Podaj imie " << endl;
getline( cin, imie );
cin.clear();
cin.ignore( 1000, '\n' );
} while( cin.fail() == true );
do
{
cout << "Podaj nazwisko " << endl;
getline( cin, nazwisko );
cin.clear();
cin.ignore( 1000, '\n' );
} while( cin.fail() == true );
cout << "Podaj wiek " << endl;
do
{
cin >> wiek;
while ((wiek<1) || (wiek>1000)) {
cout << "Podaj wiek: ";
if (!(cin >> wiek)) {
cin.clear();
cin.ignore(1000, '\n');
}
}
cin.clear();
cin.ignore( 1000, '\n' );
} while( cin.fail() == true );
return imie, nazwisko, wiek;
}
void wypiszOsobe( string & imie, string & nazwisko, int & wiek )
{
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 ] );
for ( int i = 0; i < 2; i ++ )
{
cout << endl;
cout << "Osoba " << i + 1 << endl;
wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
}
return 0;
}