Zadanie 26
Ostatnio zmodyfikowano 2015-03-16 21:33
Czdum Temat założony przez niniejszego użytkownika |
Zadanie 26 » 2015-03-15 18:52:47 Witam serdecznie. Otóż spróbowałem zrobić zadanie domowe z tego rozdziału polegające na : Napisz prosty program, który wczyta imię, nazwisko i wiek dwóch osób. Tak więc najpierw spróbowałem to zrobić kompletnie o swojemu i otóż mój program zadziałał prawidłowo (tak wiem że wiek nie jest zabezpieczony, ale nie to jest celem tego ćwiczenia) #include <cstdlib> #include <string> #include <iostream> using namespace std; int main() { string tablicazimionami[ 2 ], tablicaznazwiskami[ 2 ]; int tablicazwiekiem[ 2 ]; for( int i = 0; i < 2; i++ ) { cout << "Podaj imie" << endl; cin >> tablicazimionami[ i ]; cout << "Podaj nazwisko" << endl; cin >> tablicaznazwiskami[ i ]; cout << "Podaj wiek" << endl; cin >> tablicazwiekiem[ i ]; } for( int i = 0; i < 2; i++ ) { cout << "Dane osoby " << i + 1 << " : " << endl; cout << tablicazimionami[ i ] << " " << tablicaznazwiskami[ i ] << " " << tablicazwiekiem[ i ] << endl; } system( "PAUSE" ); return EXIT_SUCCESS; } Następnie spróbowałem zrobić to wg tego co jest napisane dokładnie w instrukcji do ćwiczenia i zrobiłem to tak: #include <string> #include <iostream> #include <cstdlib> using namespace std; void wczytajOsobe( string & imie, string & nazwisko, int & wiek ) { cout << "Podaj imie" << endl; cin >> imie; cout << "Podaj nazwisko" << endl; cin >> nazwisko; cout << "Wpisz wiek" << endl; cin >> wiek; } void wypiszOsobe( string imie, string nazwisko, int wiek ) { cout << "Podane dane: " << endl; cout << imie << " " << nazwisko << " " << 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 ] ); system( "PAUSE" ); return EXIT_SUCCESS; }
Ale nie do końca rozumiem dlaczego używa się tu referencji, a także czemu nie deklarujemy tablicy i byłbym wdzięczny, gdyby ktoś mi to wytłumaczył. Z góry dzięki za odpowiedź. |
|
tristan |
» 2015-03-15 19:42:58 Referencji używasz dlatego, że wewnątrz funkcji chcesz zmienić wartość zmiennej spoza funkcji. Przy normalnym wywołaniu, funkcja tworzy sobie kopię zmiennych na własny użytek i ich zmiana byłaby widoczna wyłącznie wewnątrz funkcji. Żeby wyprowadzić wartość poza funkcję, masz do wyboru:
a) zmienne globalne -- zło, zło, zło... b) mechanizm zwracania wartości z funkcji (return), ale wtedy musiałbyś zwracać strukturę c) przekazanie do funkcji wskaźnika d) zastosowanie referencji |
|
Gage |
» 2015-03-16 21:33:07 Kilka dni temu również zadałem pytanie odnośnie tego zadania, bo nie rozumiałem, skąd ta referencja. Wystarczyło pojąć, że przecież tablica=tablica[0], a to jest jedna ZMIENNA, a nie tablica, przez co nie jest przekazywana w oryginale poprzez wskaźnik, tylko kopiowana oraz usuwana zaraz po wykonaniu funkcji. |
|
« 1 » |