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

[C++] Funkcja wczytująca imię, nazwisko i wiek

Ostatnio zmodyfikowano 2013-12-30 21:06
Autor Wiadomość
Kozzi
Temat założony przez niniejszego użytkownika
[C++] Funkcja wczytująca imię, nazwisko i wiek
» 2013-12-30 12:07:33
Witam.
Zadanie w kursie polegało na napisaniu programu, który wczyta imię, nazwisko i wiek dwóch osób. Otrzymuję następujący błąd:
error: invalid initialization of reference of type 'std::string (&)[2] {aka std::basic_string<char> (&)[2]}' from expression of type 'std::string {aka std::basic_string<char>}'|
oraz
error: in passing argument 1 of 'void wczytajOsobe(std::string (&)[2], std::string (&)[2], int (&)[2])'|
podczas gdy kod źródłowy mojego programu prezentuje się następująco:
C/C++
#include <iostream>
#include <string>

using namespace std;
void wczytajOsobe( string( & imie )[ 2 ], string( & nazwisko )[ 2 ], int( & wiek )[ 2 ] )
{
    for( int i = 0; i < 2; i++ ) {
        cin >> imie[ i ];
        cin >> nazwisko[ i ];
        cin >> wiek[ i ];
    }
}
void wypiszOsobe( string( & imie )[ 2 ], string( & nazwisko )[ 2 ], int( & wiek )[ 2 ] )
{
    for( int i = 0; i < 2; i++ )
    {
        cout << imie[ i ];
        cout << nazwisko[ i ];
        cout << wiek[ i ];
    }
}
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;
}
P-100620
pekfos
» 2013-12-30 12:57:30
P-100629
Kozzi
Temat założony przez niniejszego użytkownika
» 2013-12-30 13:35:07
Przeczytałem uważnie cały temat, ale nie znalazłem rozwiązania do mojego problemu.:(
P-100635
leon_w
» 2013-12-30 14:59:40
Poczytaj o tablicach i przekazywaniu ich do funkcji.
P-100643
Kozzi
Temat założony przez niniejszego użytkownika
» 2013-12-30 20:09:23
Zmieniłem kod na taki:
C/C++
void wczytajOsobe( string( imie )[ 2 ], string( nazwisko )[ 2 ], int( wiek )[ 2 ] )
{
    for( int i = 0; i < 2; i++ ) {
        cin >> imie[ i ];
        cin >> nazwisko[ i ];
        cin >> wiek[ i ];
    }
}
void wypiszOsobe( string( imie )[ 2 ], string( nazwisko )[ 2 ], int( wiek )[ 2 ] )
ale otrzymuję błąd:
error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_string<char>*}' for argument '1' to 'void wczytajOsobe(std::string*, std::string*, int*)'|
P-100695
leon_w
» 2013-12-30 20:29:48
» Kurs C++ » Poziom 2Przekazywanie tablic jednowymiarowych do funkcji lekcja

Do funkcji nie da się przesłać całej tablicy. Wysyłamy tylko jak by adres początku tej tablicy.
Dlatego nie tak:
C/C++
wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );
tylko
C/C++
wczytajOsobe( imie, nazwisko, wiek );
[ cpp ]
ew.jako dodatkowy argument przesy ł amy rozmiar tej tablicy.
P-100699
Kozzi
Temat założony przez niniejszego użytkownika
» 2013-12-30 21:06:03
Boże słodki, co ja namodziłem. Dzięki.:)
P-100706
« 1 »
  Strona 1 z 1