[C] Funkcje a tablice dwuwymiarowe

lucki001
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 8 lut 2008, o 20:44
Płeć: Mężczyzna
Lokalizacja: Gliwice

[C] Funkcje a tablice dwuwymiarowe

Post autor: lucki001 »

Witam

Zwracam sie do Was o pomoc w nastepujacym problemie :
Otoz potrzebuje przeniesc tablice dwuwymiarowa (w tym przypadku jest to macierz) do funckji , kotra wczytuje wartosci podane przez uzytkownikia i zapisuje je w tej macierzy.

tak deklaruje taka macierz :

Kod: Zaznacz cały

float (*tabA)[kolumnyA]
tak tworze te macierz :

Kod: Zaznacz cały

tabA = (float (*)[kolumnyA]) malloc(wierszeA*kolumnyA*sizeof(float))
a tak wstawiam wartosci na te macierz :

Kod: Zaznacz cały

int i , j;
float tmp;
for(i=0; i<wiersze; i++)
   {
     for(j=0; j<kolumny; j++)
       {
        printf("[%d][%d] = ",i,j);
        scanf("%f",&tmp);
        tab[i][j] = tmp;
Bardzo prosilbym o napisanie deklaracji takiej funkji. Oraz w jaki sposob mialbym ja wywolywac .
Z gory dzieki za pomoc
michand
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 13 sie 2008, o 16:04
Płeć: Mężczyzna
Lokalizacja: Warszawa
Pomógł: 8 razy

[C] Funkcje a tablice dwuwymiarowe

Post autor: michand »

Aby uczynić parametrem funkcji tablicę dwuwymiarową, musisz podać liczbę kolumn tablicy, na przykład:

Kod: Zaznacz cały

void funkcja(tabA[][kolumnyA]) {
int i , j;
float tmp;
for(i=0; i<wiersze; i++)
   {
     for(j=0; j<kolumny; j++)
       {
        printf("[%d][%d] = ",i,j);
        scanf("%f",&tmp);
        tabA[i][j] = tmp;  
       }
    }
}
lucki001
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 8 lut 2008, o 20:44
Płeć: Mężczyzna
Lokalizacja: Gliwice

[C] Funkcje a tablice dwuwymiarowe

Post autor: lucki001 »

tylko , ze to ma byc wlasnie uniwersalna funkcja. A kolumnyA znacza ze sa to kolumny macierzy A.
A ta funkcja ma byc tez wywolywana dla macierzy B, wiec chyba nie moge dac w deklracja juz kolumny A .

Z tego co sie orientuje to chyba sie to jakos ze wskaznikiem robi , ale nie wiem dokladnie jak.
Dalej prosze o pomoc.

spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

[C] Funkcje a tablice dwuwymiarowe

Post autor: spajder »

jest ok, Nazwa macierzy A jest nazwą wewnętrzną funkcji, jak będziesz chciał wywołać dla macierzy B to piszesz

Kod: Zaznacz cały

funkcja(B);
i będzie dobrze

a co do wskaźników - zapis C i C++ przekazują tablicę do funkcji przez wskaźniki, więc technicznie rzecz biorąc jest to to samo
lucki001
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 8 lut 2008, o 20:44
Płeć: Mężczyzna
Lokalizacja: Gliwice

[C] Funkcje a tablice dwuwymiarowe

Post autor: lucki001 »

Niestety nie dzialaja te funkcje ktore podaliscie.
Wydaje mi sie ze sprawdzaja sie one w przypadku tablic statycznych , ale glowy bym urwac nie dal.

Licze na dalsze sugestie
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

[C] Funkcje a tablice dwuwymiarowe

Post autor: spajder »

chłopie, trochę pomyślunku... spróbuj np. dodać typ danych w deklaracji funkcji...
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

[C] Funkcje a tablice dwuwymiarowe

Post autor: kadiii »

Nie no , tak jak ty chcesz to zrobić luck001 to sie nie da. Musisz albo ustawić wskaźnik na tę twoją tablicę i użyć jako parametru funkcji wskażnika, wyliczając indeksy potem w funkcji albo użyć struktury i ją dać jako argument funkcji.
ODPOWIEDZ