Rozdział 26 zadanie 2
Ostatnio zmodyfikowano 2015-12-01 00:30
Matis28 Temat założony przez niniejszego użytkownika |
Rozdział 26 zadanie 2 » 2015-12-01 00:02:15 Cześć mam problem z moim kodem #include <string> #include <iostream> #include <limits>
using namespace std;
void wczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Podaj imie: "; getline( cin, imie ); cout << "Podaj nazwisko: "; getline( cin, nazwisko ); do { cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' ); cout << "Podaj wiek: "; cin >> wiek; } while( !cin.good() ); }
void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << endl << "Imie: " << imie << endl << "Nazwisko: " << nazwisko << endl << "Wiek: " << wiek << endl; }
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 ] ); for( int i = 0; i < 2; i++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); system( "pause" ); return 0; } Program przy wprowadzaniu nazwiska po raz pierwszy pyta o nie normalnie i zapisuje je do tablicy po czym zamiast wyświetlić podaj wiek schodzi linię niżej i czeka aż wprowadzi się jakieś znaki.Przy drugim wywołaniu funkcji wczytajOsobe pomija pytanie o imie a o nazwisko również pyta dwa razy zapisując pierwszą podaną wartość. |
|
carlosmay |
» 2015-12-01 00:08:47 cout << "Podaj wiek: "; cin >> wiek; cin.clear(); cin.ignore( numeric_limits < streamsize >::max(), '\n' );
Cytat z posta dotyczącego zadania pierwszego. Czytaj uważnie odpowiedzi. Przed pierwszym wczytywaniem imienia masz czyszczenie pustego strumienia, więc metoda cin.ignore() (a strumień jest pusty) czeka na znak nowego wiersza. |
|
|
Matis28 Temat założony przez niniejszego użytkownika |
» 2015-12-01 00:30:43 Faktycznie. Mój błąd. Przepraszam za niepotrzebny temat i wielkie dzięki za cierpliwość :) |
|
« 1 » |