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

[lekcja 26] Problem z zad.dom. (getline();)

Ostatnio zmodyfikowano 2013-09-07 22:22
Autor Wiadomość
Snaki
Temat założony przez niniejszego użytkownika
[lekcja 26] Problem z zad.dom. (getline();)
» 2013-09-07 14:28:42
Witam. Mam problem z zadaniem domowym, mój kod:

C/C++
#include <iostream>
#include <string>

using namespace std;

int wczytajOsobe( string & imie_i_nazwisko, int & wiek )
{
    cout << "Podaj imie i nazwisko: ";
    getline( cin, imie_i_nazwisko );
    cin.clear();
    cin.sync();
    cout << "Podaj wiek:";
    cin >> wiek;
    cin.clear();
    cin.sync();
   
   
   
}

int wypiszOsobe( string & imie_i_nazwisko, int & wiek )
{
    cout << "Imie i nazwisko: " << imie_i_nazwisko << "wiek: " << wiek << endl;
}
int main()
{
    string imie_i_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;
}

Problem tkwi w tym, że za pierwszym razem poprawnie wpisuje się imie_i_nazwisko, ale już za drugim razem nie. O.o Przy wpisywaniu 'wiek' wszystko jest dobrze. Jeszcze jedno, to dzieje się tylko z funkcją getline, przy 'cin' wszystko chodzi pięknie.


Pozdrawiam.
P-91625
MrPoxipol
» 2013-09-07 16:10:24
Nie zwracasz nic w funkcji, a chcesz zwracać int, to po pierwsze. Po drugie skompilowałem u siebie (GCC TDM 4.7.1) pod Windows i wszystko gra, nie wiem gdzie Twój problem, może używasz systemu innego niż Windows, a na innych musisz wywołać std::cin.ignore() zamiast std::cin.sync().
P-91637
Snaki
Temat założony przez niniejszego użytkownika
Dzięki
» 2013-09-07 22:22:39
Dziękuję. Masz rację, używam Debiana. ;d Zamykam.
P-91667
« 1 »
  Strona 1 z 1