Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 26] Mały problem z wpisywaniem danych

Ostatnio zmodyfikowano 2011-11-05 19:19
Autor Wiadomość
Wonski92
Temat założony przez niniejszego użytkownika
[Lekcja 26] Mały problem z wpisywaniem danych
» 2011-11-05 16:42:09
C/C++
#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.
P-43367
pekfos
» 2011-11-05 16:44:24
cin.ignore();

dodaj przed wczytywaniem.
P-43368
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ść :)
P-43369
pekfos
» 2011-11-05 19:19:07
bo czyści strumień wejściowy. Miałeś tam śmieci więc ci je wczytywało.
P-43398
« 1 »
  Strona 1 z 1