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

Przekazywanie tablic jednowymiarowych do funkcji

Ostatnio zmodyfikowano 2015-08-22 14:33
Autor Wiadomość
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:

C/C++
#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:
C/C++
#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;
}
P-136686
carlosmay
» 2015-08-22 14:33:53
1. w main()
C/C++
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.
C/C++
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ć:
C/C++
int main()
{
    const int SIZE = 5;
    int liczba[ SIZE ];
    wczytaj( liczba, SIZE );
    wypisz( liczba, SIZE );
    return 0;
}
P-136703
« 1 »
  Strona 1 z 1