Zadnie domowe Rozdzial 26. Wczytywanie tekstu - standardowy strumień wejścia
Ostatnio zmodyfikowano 2017-02-21 13:23
alleczad Temat założony przez niniejszego użytkownika |
Zadnie domowe Rozdzial 26. Wczytywanie tekstu - standardowy strumień wejścia » 2017-02-21 11:56:35 Witam. Mam problem z następującym zadaniem.Napisz prosty program, który wczyta imię, nazwisko i wiek dwóch osób. Funkcja główna programu ma mieć następującą postać: 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; } Zrobiłem taki kod. Program się kompiluje pyta o imie, nazwisko i wiek 1 osoby po czym się wysypuje. Gdzie robię bląd? Oto mój kod #include <iostream> using namespace std;
string wczytajOsobe( string imie, string nazwisko, int wiek ) { cout << "Podaj imie: "; getline( cin, imie ); cout << "Podaj nazwisko: "; getline( cin, nazwisko ); cout << "Podaj wiek: "; cin >> wiek; } string wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Imie to: " << imie << endl; cout << "Nazwisko to: " << nazwisko << endl; cout << "Wiek to: " << 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++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; } |
|
Monika90 |
» 2017-02-21 12:34:56 Zadeklarowałeś że funkcje zwracają string, a tego nie robią, to znaczy nie ma w nich instrukcji return. Zmień ich typ na void. |
|
alleczad Temat założony przez niniejszego użytkownika |
» 2017-02-21 12:51:39 zmienilem na void, dodalem cin.clear cin.sync. Wczytywanie niby działa za to wyczytwanie nie. Oto moj aktualny kod #include <iostream> using namespace std;
void wczytajOsobe( string imie, string nazwisko, int wiek ) { cin.clear(); cin.sync(); cout << "Podaj imie: "; getline( cin, imie ); cout << "Podaj nazwisko: "; getline( cin, nazwisko ); cout << "Podaj wiek: "; cin >> wiek; } void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Imie to: " << imie << endl; cout << "Nazwisko to: " << nazwisko << endl; cout << "Wiek to: " << 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++ ) wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); return 0; } |
|
hit |
» 2017-02-21 13:10:00 Musisz zastosować referencję w funkcji wczytującej dane. |
|
alleczad Temat założony przez niniejszego użytkownika |
» 2017-02-21 13:23:13 Dzięki teraz działa jak powinno. Z tego co widzę to w tablicach w funkcji main te moje wpisane zmienne się nie zapisywały do tablic bo nie miałem referencji, a poprzez dodanie jej , przekazałem te nowe stringi i inty do tablic i możliwy był ich odczyt |
|
« 1 » |