Przekazywanie tablic jednowymiarowych do funkcji
Ostatnio zmodyfikowano 2015-08-22 14:33
Banneq Temat założony przez niniejszego użytkownika |
Przekazywanie tablic jednowymiarowych do funkcji » 2015-08-22 09:58:58 Cześć, nie za bardzo rozumiem i funkcje i przekazywanie do nich tablic jednowymiarowych. To co zaraz zobaczycie, to pewnie tragedia. Liczę na to, że poprawicie wszystko i pokażecie mi w czym robię błąd. Ten program: #include <iostream>
int main() { int liczba[ 10 ]; int licznik = 0; do { std::cin >> liczba[ licznik ]; licznik++; } while( licznik < 10 ); std::cout << "Podales nastepujace liczby: "; licznik = 0; do { std::cout << liczba[ licznik ] << ", "; licznik++; } while( licznik < 10 ); return 0; } chciałem rozbić na funkcje, by w nich wykonywane było podanie liczb i ich wypisanie. Mam nadzieję, że mi pomożecie i pokażecie gdzie robię błędy i jak je poprawić. Myślę, że po waszej edycji, powinienem zrozumieć i funkcje i przekazywanie do nich tablic. Uczę się na błędach, wyciągam z nich wnioski. A oto program do (DUŻEJ) poprawy: #include <iostream> using namespace std;
int liczby( int liczby[] ) { int licznik = 0; int liczba = 0; cout << "Podaj 5 liczb: " << endl; do { cin >> liczba[ licznik ]; licznik++; } while( licznik < 5 ); return liczba; }
void wypisz( int liczby[] ) { licznik = 0; do { cout << liczba[ licznik ] << ", "; licznik++ } while( licznik < 5 ); }
int main() { int liczba[ 5 ]; int licznik = 0; wczytaj(); cout << "Podales nastepujace liczby: "; int licznik = 0; wypisz(); return 0; } |
|
carlosmay |
» 2015-08-22 14:33:53 1. w main() const int rozmiar = 5; int liczba[ rozmiar ];
można tak i wtedy przekazując zmienną do funkcji jest czytelniej. 2. wczytaj() tak wywołujesz funkcję, którą nazwałeś int liczby( int liczby[] ) . Jak wywołujesz funkcję to musisz przekazać jej to na czym ma ona operować, Poza tym funkcja operuje na oryginalnej tablicy więc nie zwraca ona wartości. 3. void wczytaj( int tab[], int iRozm ) przekazujesz do funkcji tablicę i jej rozmiar, operujesz na tych danych. np. int count = 0; do { cin >> tab[ count ]; ++count; } while( count < iRozm );
4. To samo tyczy się funkcji wypisz(). Zmieniając rozmiar tablicy nie musisz zmieniać we wszystkich miejscach tylko w miejscu inicjalizacji, bo operujesz na zmiennych a nie stałych wartościach. Jeśli chodzi o przekazywanie tablic do funkcji to funkcja odbiera adres oryginalnej tablicy i na niej wykonuje działania, więc efekty pozostają po wyjściu z funkcji (jak działanie na argumentach przekazywanych przez referencje). Tak możesz myśleć o tablicach. Funkcja odbiera adres pierwszego elementu tablicy. Funkcję główną możesz sobie tak uprościć: int main() { const int SIZE = 5; int liczba[ SIZE ]; wczytaj( liczba, SIZE ); wypisz( liczba, SIZE ); return 0; }
|
|
« 1 » |