[C++, funkcje, tablica] error: expected initializer before '&' token
Ostatnio zmodyfikowano 2013-01-12 22:58
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: #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 for( int i = 0; i < 2; i++ ) wczytajOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); i 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 Wczytywanie tekstu - standardowy strumień wejścia. Z góry dziękuję i pozdrawiam. |
|
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 |
|
DejaVu |
» 2013-01-12 22:48:22 void wczytajOsobe( std::string & imie[ i ], std::string & nazwisko[ i ], int & wiek[ i ] )
zamień na: 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ł: Przekazywanie argumentów funkcji przez referencję. |
|
kanam99 Temat założony przez niniejszego użytkownika |
» 2013-01-12 22:58:17 Dziękuję za pomoc. Program już działa. Zamykam :) |
|
« 1 » |