prof. Nunzio Brugaletta | Programmazione e linguaggio C |
Un array a più dimensioni è un insieme di elementi dello stesso tipo, ognuno referenziabile da un insieme di indici: tanti quante sono le dimensioni dell’array stesso. Se si ha un array bidimensionale, per esempio, occorrono due indici per identificare un elemento della struttura.
Il formato generale della dichiarazione di un array a più dimensioni è:
tipo nome_variabile[dimensione] [dimensione] [dimensione]..
Gli array bidimensionali (matrici), che sono quelli più comunemente utilizzati, possono essere pensati come un insieme di elementi posizionati in una tabella: il primo indice identifica la riga, il secondo la colonna. Un elemento viene identificato specificando la riga e la colonna in cui si trova.
Come esempio di uso di un array a due dimensioni si propone un programma che costruisce e poi visualizza la tavola pitagorica. Le righe più significative sono, al solito, corredate da etichette numeriche che serviranno per i commenti successivi:
/* Stampa su video la tavola pitagorica */ #include <stdio.h> main(){ int tavpit[11][11]; /*1*/ int i,j; /* Costruisce la tavola */ for (i=1;i<11;i++){ /*2*/ for (j=1;j<11;j++){ /*3*/ tavpit[i][j]=i*j; /*4*/ } } /* Manda in output la tavola */ for (i=1;i<11;i++) { for (j=1;j<11;j++) printf("%3d ",tavpit[i][j]); /*5*/ printf("\n"); /*6*/ } }
Nella riga con etichetta 1 si dichiara una matrice di 11 righe ed 11 colonne.
Nella 2 si inizia il ciclo per la scansione delle righe della tabella (l’indice i viene utilizzato per identificare la riga esaminata della tabella). L’indice viene inizializzato ad 1 non avendo interesse a visualizzare la riga formata da tutti valori nulli.
Nella 3 si inizia un nuovo ciclo, interno al primo, per la scansione delle colonne. L’uso delle parentesi mette in evidenza il funzionamento di questo doppio ciclo: si esamina la prima riga (i=1) e quindi le varie colonne di quella riga (per i=1 l’indice J varia da 1 a 10) . Si passa poi alla riga successiva e così via.
Nella 4 si assegna il valore all’elemento della tabella che sta nella riga i e nella colonna j: nel nostro caso sarà equivalente al prodotto fra i due indici.
Nella 5 viene mandato in output l’elemento generico. La stringa di formattazione dell’output consente l’allineamento e l’incolonnamento dei numeri della tabella.
La printf della riga 6 manda in output semplicemente un newline che consente di passare a capo quando si tratta di stampare su video una nuova riga della tabella. La printf è infatti posizionata alla fine del ciclo controllato da j (quello che stampa le colonne di una riga), quindi dopo la stampa di tutte le colonne di una riga, e prima della chiusura del ciclo controllato da i (quello che stampa le righe) quindi prima di passare alla prossima riga.
http://ennebi.solira.org | ennebi@solira.org |