[Lekcja 26] Mały problem z wpisywaniem danych
Ostatnio zmodyfikowano 2011-11-05 19:19
Wonski92 Temat założony przez niniejszego użytkownika |
[Lekcja 26] Mały problem z wpisywaniem danych » 2011-11-05 16:42:09 #include <iostream> #include <string>
using namespace std;
int sprawdz( int & zmienna ) { while( cin.fail() == 1 ) { cin.clear(); cin.sync(); cout << "Podane dane sa nieprawidlowe, sprobuj ponownie : "; cin >> zmienna; } return zmienna; }
void wczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Prosze podac imie : "; getline( cin, imie ); cout << "Prosze podac nazwisko : "; getline( cin, nazwisko ); cout << "Prosze podac wiek : "; cin >> wiek; sprawdz( wiek ); }
void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Podane imie : " << imie << endl; cout << "Podane nazwisko : " << nazwisko << endl; cout << "Podane 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 ] ); return 0; }
Mam mały problem z tym zadankiem. Otóż wszystko działa ładnie pięknie tylko nie mogę wpisać drugiego imienia. Zamiast możliwości wpisania tego imienia program przeskakuje mi tę informację i wyświetla "Prosze podac imie : Prosze podac nazwisko : " i mogę jedynie wczytac zmienna nazwisko. Sprawdzając funkcję sprawdz odkryłem, że jeśli wczytując wiek wpiszę "24blablabla" To zmienna imie [ 1 ] przyjmuje wartość "blablabla". Jaki błąd popełniłem?? Nie mogę tego naprawić, a próbowałem wiele razy. |
|
pekfos |
» 2011-11-05 16:44:24 cin.ignore(); dodaj przed wczytywaniem. |
|
Wonski92 Temat założony przez niniejszego użytkownika |
» 2011-11-05 16:52:39 Aha, teraz wszystko działa. Wystarczyło dodać tylko tę linię. Dziękuję za pomoc :)W sumie nie za bardzo rozumiem dlaczego teraz działa, ale zapamiętam tą funkcję na przyszłość :) |
|
pekfos |
» 2011-11-05 19:19:07 bo czyści strumień wejściowy. Miałeś tam śmieci więc ci je wczytywało. |
|
« 1 » |