Tablice wielowymiarowe
Gdy chcemy utworzyć tablicę dwuwymiarową, mamy 4 możliwości. W każdym z poniższych przykładów tablica będzie miała 2 wiersze i 5 kolumn.
Tablice automatyczne
int tab1[2][5];
Tablice dynamiczne w obu wymiarach
// utworzenie: int **tab4, i; tab4 = malloc(2 * sizeof *tab4); for(i = 0; i < 2; ++i){ tab4[i] = malloc(5 * sizeof *tab4[i]); } // zwolnienie: for(i = 0; i < 2; ++i){ free( tab4[i] ); } free( tab4 );
Tablice mieszane
// utworzenie: int *tab2[2], i; for(i = 0; i < 2; ++i){ tab2[i] = malloc(5 * sizeof *tab2[i]); } // zwolnienie: for(i = 0; i < 2; ++i){ free( tab2[i] ); }
// utworzenie: int (*tab3)[5]; tab3 = malloc(2 * sizeof *tab3); // zwolnienie: free( tab3 );
Użycie tablic wielowymiarowych
Każdego z tych rodzajów tablic
można używać jak tablic automatycznych
tab[i][j]
.
Zadania
-
Napisz funkcję, która dostaje jako parametry dodatnie liczby całkowite
n
,m
; tworzy dynamiczną dwuwymiarową tablicę typudouble
o wymiarachn
nam
i zwraca jej adres. -
Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu
double
oraz jej wymiaryn
,m
i zwalnia pamięć używaną przez tę tablicę. -
Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu
double
oraz jej wymiaryn
,m
i wypisuje na standardowe wyjście wszystkie elementy tablicy. -
Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu
double
oraz jej wymiaryn
,m
i zeruje wszystkie elementy tablicy. -
Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu
double
oraz jej wymiaryn
,m
i zwraca sumę wszystkich elementów tablicy. -
Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu
double
oraz jej wymiaryn
,m
i zwraca indeks wiersza o największej sumie elementów w nim zapisanych. -
Napisz funkcję, która przyjmuje trzy kwadratowe dynamiczne dwuwymiarowe tablice i ich wspólny rozmiar. Dwa pierwsze parametry są macierzami kwadratowymi, które funkcja powinna wymnożyć a wynik umieścić w trzeciej tablicy. Zakładamy, że wszystkie tablice są już zaalokowane.
-
Napisz funkcję, która dostaje jako argumenty dwie dwuwymiarowe dynamiczne tablice o elementach typu
char
oraz ich wymiary. Funkcja zwraca wartość 1, jeżeli elementy obu tablic tworzą identyczne zbiory wartości (wartośćx
występuje w pierwszej tablicy wtedy i tylko wtedy gdy występuje w drugiej) i 0 w przeciwnym wypadku.