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

Zadnie domowe Rozdzial 26. Wczytywanie tekstu - standardowy strumień wejścia

Ostatnio zmodyfikowano 2017-02-21 13:23
Autor Wiadomość
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ć:
C/C++
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
C/C++
#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;
}
P-158096
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.
P-158097
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
C/C++
#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;
}
P-158099
hit
» 2017-02-21 13:10:00
Musisz zastosować referencję w funkcji wczytującej dane.
P-158101
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
P-158102
« 1 »
  Strona 1 z 1