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

[C++, funkcje, tablica] error: expected initializer before '&' token

Ostatnio zmodyfikowano 2013-01-12 22:58
Autor Wiadomość
kanam99
Temat założony przez niniejszego użytkownika
[C++, funkcje, tablica] error: expected initializer before '&' token
» 2013-01-12 21:30:51
Witam. Z góry przepraszam za chaotyczny temat, ale nie miałem pomysłu jak go inaczej zformułować. Mam taki kod:
C/C++
#include <iostream>
#include <string>

void wczytajOsobe( std::string & imie[ i ], std::string & nazwisko[ i ], int & wiek[ i ] )
{
    std::cout << "Podaj imie:";
    std::cin >> imie[ i ];
    if( std::cin.fail() == true )
    {
        std::cin.clear();
        std::cin.sync();
        do
        {
            std::cout << "Zle! Chce litery!";
            std::cin >> imie[ i ];
            std::cin.clear();
            std::cin.sync();
        } while( std::cin.fail() == true );
       
    }
    std::cout << "Dobrze:)";
   
    std::cout << "Podaj nazwisko:";
    std::cin >> nazwisko[ i ];
    if( std::cin.fail() == true )
    {
        std::cin.clear();
        std::cin.sync();
        do
        {
            std::cout << "Zle! Chce litery!";
            std::cin >> nazwisko[ i ];
            std::cin.clear();
            std::cin.sync();
        } while( std::cin.fail() == true );
       
    }
    std::cout << "Dobrze :)";
   
    std::cout << "Podaj wiek:";
    std::cin >> wiek[ i ];
    if( std::cin.fail() == true )
    {
        std::cin.clear();
        std::cin.sync();
        do
        {
            std::cout << "Zle! Chce liczby!";
            std::cin >> wiek[ i ];
            std::cin.clear();
            std::cin.sync();
        } while( std::cin.fail() == true );
       
    }
    std::cout << "Dobrze :)";
}

void wypiszOsobe( std::string imie[ i ], std::string nazwisko[ i ], int wiek[ i ] )
{
    std::cout << "Imie:" << imie[ i ] << "Nazwisko:" << nazwisko[ i ] << "Wiek:" << wiek[ i ] << std::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;
}

W funkcji głównej w miejscu
C/C++
for( int i = 0; i < 2; i++ )
     wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );

i
C/C++
for( int i = 0; i < 2; i++ )
     wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] );

mamy czwartą zmienną "i". Moje pytanie brzmi: jak przekazać tą zmienną do funkcji "wczytajOsobe" i "wypiszOsobe". I dlaczego log wywala mi błąd w czwartej linijce (nagłówek "wczytajOsobe")o treści:
expected initializer before '&' token
 oraz
expected ')' before ',' token
 Przy okazji: czy dobrze napisałem obie funkcje? Jest to zadanie domowe z lekcji » Kurs C++ » Poziom 3Wczytywanie tekstu - standardowy strumień wejścia lekcja. Z góry dziękuję i pozdrawiam.
P-73739
Savail
» 2013-01-12 22:48:20
te "i" w definicjach twoich funkcji jest niepotrzebne. Wykasuj je a zostaw tylko przy wywoływaniu, chociaż nie wiem czy było twoją intencją przekazywanie tablicy do funkcji z coraz wyższym indeksem i. Nie chce mi się analizować całego kodu więc jak coś by jeszcze szwankowało to tu może być też błąd : P
P-73746
DejaVu
» 2013-01-12 22:48:22
C/C++
void wczytajOsobe( std::string & imie[ i ], std::string & nazwisko[ i ], int & wiek[ i ] )
zamień na:
C/C++
void wczytajOsobe( std::string & imie, std::string & nazwisko, int & wiek )
Analogiczne zmiany wprowadź w drugiej funkcji. Zastanów się dlaczego ta linijka ma tak wyglądać, a jeżeli nie znajdziesz odpowiedzi to przeczytaj jeszcze raz rozdział: » Kurs C++ » Poziom 3Przekazywanie argumentów funkcji przez referencję lekcja.
P-73747
kanam99
Temat założony przez niniejszego użytkownika
» 2013-01-12 22:58:17
Dziękuję za pomoc. Program już działa. Zamykam :)
P-73752
« 1 »
  Strona 1 z 1