reshi Temat założony przez niniejszego użytkownika |
Wczytywanie-tekstu-standardowy-strumien-wejscia lekcja 26 problem z funkcjami » 2012-10-10 17:51:09 Witam mam problem z funkcjami jestem na lekcji 26 i występuje ten problem ze mam przekazać string do funkcji (zadanie domowe) jednak to nie działa ponieważ nie wiem jak to zrobić myślałem żeby to zrobić żeby w ten sposób void wczytajosobe( std::string imie1[], std::string naziwsko1[], std::string wiek1[] ) ale to nie działa gdy tamto std zniknie nadal to nie działa. Może mi ktoś powiedzieć jak przekazywać te klasy stringi do funkcji ? Wszystko dogłębnie czytałem nawet parę razy ten dział ale nie znalazłem odpowiedzi jak przekazać string do funkcji. |
|
SeaMonster131 |
» 2012-10-10 18:05:43 Usuń nawiasy kwadratowe. Nie czytałem zadania, lecz domyślam się, iż będziesz musiał tutaj użyć referencji. |
|
reshi Temat założony przez niniejszego użytkownika |
» 2012-10-10 20:08:05 Ale to jest tablica więc z tego co wiem nawiasy muszą być |
|
SeaMonster131 |
» 2012-10-10 20:10:57 Nie przekazujesz do funkcji tablicy stringów, tylko jedną zmienną. Dodatkowo ostatnim argumentem w funkcji nie jest string, ale int. |
|
reshi Temat założony przez niniejszego użytkownika |
» 2012-10-11 15:35:30 tylko jedną zmienną. Możesz mi to lepiej wytłumaczyć ? bo nie rozumiem jak jedną zmienną bo nie kapuje Ok mam prawie dobrze tylko teraz wyskakuje taki błąd error: cannot convert 'std::string' to 'std::string*' for argument '1' to 'void wczytajOsobe(std::string*, std::string*, int*)'| error: cannot convert 'std::string' to 'std::string*' for argument '1' to 'void wypiszOsobe(std::string*, std::string*, int*)'| Aktualny kod mam taki co prawda nie skończone bo męczę się nadal z tym problemem #include <iostream> #include <cstdio> #include <limits> void wczytajOsobe( std::string imie1, std::string naziwsko1, int wiek1[] ) { } void wypiszOsobe( std::string imie1, std::string naziwsko1, int wiek1[] ) { } 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 ] ); std::cin.clear(); std::cin.sync(); } for( int i = 0; i < 2; i++ ) { wypiszOsobe( imie[ i ], nazwisko[ i ], wiek[ i ] ); std::cin.clear(); std::cin.sync(); } getchar(); return 0; }
Pomóżcie bo ja nie rozumiem tego |
|
DejaVu |
» 2012-10-11 16:34:08 |
|
SeaMonster131 |
» 2012-10-11 16:36:52 Usuń nawiasy kwadratowe :P void wczytajOsobe( std::string imie1, std::string naziwsko1, int wiek1 ) { } void wypiszOsobe( std::string imie1, std::string naziwsko1, int wiek1 ) { }
Jeżeli argumentem funkcji jest typ zmienna[] , to musisz przesłać tejże funkcji tablicę tego samego typu, np: void fun( int var[] ) { std::cout << var[ 0 ]; }
.. int tab[ 3 ] = { 1, 2, 3 }; fun( tab );
Więc jak widzisz, w ten sposób przesyłasz do funkcji całą tablicę. Natomiast każdy element tablicy (czyli w tym wypadku tab[0], tab[1], tab[2]) to tak jakby pojedyncza zmienna. Więc kod wyglądałby w ten sposób: void fun( int var ) { std::cout << var; }
.. int tab[ 3 ] = { 1, 2, 3 }; fun( tab[ 0 ] );
Więc skoro w treści zadania, w podanym kodzie, jest ten drugi przypadek ( fun( tab[ 0 ] ) ), więc do funkcji przesyłasz zmienną, a nie tablicą. Nie jestem dobry w tłumaczeniu różnych rzeczy, ale mam nadzieję, że choć trochę Ci to przybliżyłem? |
|
reshi Temat założony przez niniejszego użytkownika |
» 2012-10-11 16:41:42 Trochę przybliżyłeś poszukałem na forum znalazłem kod innego użytkownika z tym że on się o co innego pytał a kod miał dobry pomyślałem dobrze i zrozumiałem gdy przekazujemy tablice i podajemy konkretnie którą to w funkcji nie możemy jej podawać jeszcze raz ale gdy mamy tablicę nie podaną to w funkcji musimy ją podać yyy chyba dobrze zrozumiałem co nie ? |
|
« 1 » 2 |