poprzedni temat | w górę | następny temat

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];

Tablica automatyczna

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 );

Tablica dynamiczna

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] );
}

Tablica mieszana

// utworzenie:
int (*tab3)[5];
tab3 = malloc(2 * sizeof *tab3);
// zwolnienie:
free( tab3 );

Tablica mieszana

Użycie tablic wielowymiarowych

Każdego z tych rodzajów tablic można używać jak tablic automatycznych tab[i][j].

Zadania

  1. Napisz funkcję, która dostaje jako parametry dodatnie liczby całkowite n, m; tworzy dynamiczną dwuwymiarową tablicę typu double o wymiarach n na m i zwraca jej adres.

  2. Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu double oraz jej wymiary n, m i zwalnia pamięć używaną przez tę tablicę.

  3. Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu double oraz jej wymiary n, m i wypisuje na standardowe wyjście wszystkie elementy tablicy.

  4. Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu double oraz jej wymiary n, m i zeruje wszystkie elementy tablicy.

  5. Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu double oraz jej wymiary n, m i zwraca sumę wszystkich elementów tablicy.

  6. Napisz funkcję, która dostaje jako parametry wskaźnik do dynamicznej dwuwymiarowej tablicy typu double oraz jej wymiary n, m i zwraca indeks wiersza o największej sumie elementów w nim zapisanych.

  7. 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.

  8. 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.

poprzedni temat | w górę | następny temat