Modyfikowanie tablicy w funkcji

0

Cześć, jestem początkujący i mam spory problem z jednym zadaniem. Muszę napisać 3 funkcje- wczytującą tablice, modydikującą tablice i drukującą tablice. Problem mam z tą drugą i trzecią. Nie wiem jak sprawić, żeby funkcja drukująca pobierała wynik z tej modyfikującej. Pomijając biblioteki mam:

void wczytaj(int tab[], int liczba_elementow)
{
    int id;
    for (id = 0; id < liczba_elementow; id++) {
        printf("podaj element o indeksie %d: ", id);
        scanf("%d", &tab[id]);
    }
}

int modyfikuj(int tab_in[], int n)
{
    int id, srednia, suma = 0;
    for (id = 0; id < n; id++) {
        suma += tab_in[id];
    }
    srednia = suma / n;
    int x = srednia - tab_in[id];
    for (id = 0; id < n; id++) {
        return x;
    }
}

void drukuj(int tab[], int liczba_elementow)
{
    int id;
    for (id = 0; id < liczba_elementow; id++) {
        printf("wartosc elementu %d to %d\n", id, tab[id]);
    }
}

int main()
{
    int n;
    printf("Podaj ilosc elementow w tablicy. ");
    scanf("%d", &n);
    int tablica[n];
    wczytaj(tablica, n);
    int a = modyfikuj(tablica, n);
    drukuj(a, n);
    return 0;
}

Jestem troche w kropce i nie wiem co zrobic dalej

5

Nie wiem, czy cie rozumem, ale tablice są przekazywane (efektywnie) przez wskaznik, więc wszystko dzieje się w oparciu o jeden oryginał.

Mam wrażenie, że wyrobiłeś sobie mniemanie, że argument tablicowy przekazywany jest przez wartość (czyli kopiowane) - tak nie jest.

efektywnie - tzn mimo zapisu tablizowego [] to nadal jest wskażnik, tak jak *

4
wczytaj(tablica, n);
modyfikuj(tablica, n);
drukuj(tablica, n);

Przez to, że jest to tablica (czyli jest przekazywana przez wskaznik), modyfikacje będą widoczne po wyjściu z funkcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1