View Single Post
Old 13-10-2007, 11:15   #6
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
Quote:
Originariamente inviato da Malta Guarda i messaggi
Ti ringrazio per la risposta.
Però nella guida di HTML.it che 'sto seguendo per imparare il C cera questa spiegazione e in più delle altre affermazioni che non sono sicuro di aver compreso:


Mi potreste spiegare il siginficato???
Il link della pagina è questo.
Grazie, ciao.
Un array multidimensionale, se bidimensionale come in questo caso dicesi matrice sinonimo di tabella è formato da un certo numero di righe ed un certo numero di colonne.

Nel tuo caso hai m righe ed n colonne quindi hai una tabella di 12 righe e 10 colonne come puoi vedere dalla dichiarazione delle variabili.

Si presuppone che tu usi una matrice per metterci qualcosa dentro (dati). Esattamente come faresti con una tapella in HTML o di EXCEL ogni elemento della tabella conterrà qualcosa, nel tuo caso conterrà VALORI INTERI, te lo dice la dichiarazione della matrice stessa tramite questa dichiarazione int matrix[n][m]; che sostanzialmente la puoi leggere come: "Crea un array bidimensionale (matrice) chiamato matrix di n righe ed m colonne che contiene valori interi (per l'int iniziale che come per le variabili ti stabilisce il TIPO DI DATO che quella struttura dovrà contenere...è una cosa molto importante sapere con che dati stai operando...questa matrice potrà contenere solo valori numerici interi).

Poi si presuppone che tale tabella venga popolata in qualche modo con dei valori (li puoi mettere a mano con una dichiarazione stile array, puoi farli mettere ad un programma in maniera random, etcetc) ma adesso non ti frega cosa ci sia dentro.

Nel programma vengono dichiarate anche due variabili intere i, j che vengono usate come indici per scorrere le righe e le colonne della tua tabella matrix.

Essa viene "esplorata" tramite le seguenti linee di codice:

Codice:
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
printf("%d", matrix[i][j]);
}
printf("n");
}
Cosa fanno queste linee di codice?
è molto semplice, devi scorrere riga per riga tutte le 12 colonne, per cui usi 2 cicli annidati:

Il ciclo più interno scorre le n righe, quello più esterno scorre le m colonne.
Che succede? sostanzialmente questo

Inizzi con l'esecuzione del ciclo più esterno:

stai posizionato sulla colonna 0, parte il secondo ciclo che come prima cosa stampa a video il valore contenuto nella prima riga prima colonna ovvero il valore contenuto in matrix[0][0] tramite questa operazione:
printf("%d", matrix[i][j]);
che dice di stampare il valore decimale contenuto nella matrice matrix nella posizione identificata dall'indice di riga i e dall'indicedi colonna j.
Poi il ciclo annidato più interno rinizia e l'indice j viene incrementato di 1 quindi stampa il valore intero contenuto in matrix[0][1], quindi rinizia e stampa matrix[0][2]

Questo ciclo interno si fermerà quando l'indice j sarà uguale ad n (detto in maniera rozza ma efficace quando le righe della prima colonna sono state tutte lette), allora rinizierà il ciclo esterno con i incrementato di 1 (quindi i=1) e riprenderà il ciclo interno come prima ma questa volta stampando tutte le righe della seconda colonna e così via finchè non ha stampato tutta la matrice a video.

In pratica questo programma scrive prima tutti i valori della prima colonna, poi della seconda colonna, poi della terza e così via fino alla fine della matrice.

Spero di non aver detto cazzate ma è aprecchio che non tocco C cmq dovrebbe esse giusto
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso