01: // allocazione dinamica array bidimensionali usando un array monodimensionale
02: #include<stdio.h>
03: #include<stdlib.h>
04:
05: int main(int argc, char **argv){
06:
07: // posso vedere una matrice come un insieme di elementi
08: // posso disaccoppiare ogranizzazione logica e "fisica"
09: // usando un array monodimensionale
10:
11:
12: // leggo dimensioni da usare
13: int nrows, ncols;
14: printf("Inserisci le dimensioni della matrice che vuoi gestire: ");
15: scanf("%d%d", &nrows, &ncols);
16:
17: int *matrix; // un puntatore di puntatori permette di gestire un array di array
18:
19: // Alloco il numero necessario di byte per gestire nrows*ncols elementi
20: matrix = malloc(nrows * ncols * sizeof(int));
21:
22: // allocazione finita, pero' per usarla devo convertire
23: // gli indici di riga e colonna dell'ipotetica matrice nel
24: // corrispondente indice come se mettessi le righe
25: // tutte di seguito l'una all'altra. La formula e'
26: // indice nell'array = <indice di colonna> + <indice di riga> * <numero elementi nella riga>
27:
28: // esempio di scrittura (inizializzo con numeri casuali tra 0 e 99)
29: for(int r = 0; r < nrows; ++r)
30: for(int c = 0; c < ncols; ++c)
31: matrix[c + r * ncols] = rand()%100;
32:
33: // esempio di lettura (stampa)
34: for(int r = 0; r < nrows; ++r)
35: {
36: for(int c = 0; c < ncols; ++c)
37: printf("%2d ", matrix[c + r * ncols]);
38: printf("\n");
39: }
40:
41: return 0;
42: }
43:
44:
Se avete commenti o osservaƶioni su questa pagina
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it
mandate un messaggio di posta elettronica a bertoƶƶi@ce.unipr.it