Informatica 2 Liceo Scientifico Scienze Applicate/Matrici e Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 6:
TipoDiDati NomeMatrice[DimensioneRighe][DimensioneColonne]
 
se voglio una matrice di nome mat con 53 righe e 34 colonne i cui elementi sono interi devo dare il comando:
 
int mat[53][34]<br />
[[File:Matrice3righe 4colonne valori.png|500px|Matrice 3*4 Valori memorizzati]]<br />
 
 
Gli indici, come nei vettori, partono da zero, il primo indice per convenzione e' il numero di riga e il secondo è il numero di colonna se la matrice ha 3 righe e 4 colonne l'indice della riga puo' assumere i valori 0,1,2 e quello della colonna 0,1,2,3. per passare in rassegna tutte le celle di una matrice devo generare tutte le coppie di indici
0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1,2,2 2,3
per farlo uso 2 cicli for annidati del tipo
<source lang=php>
{for(ji=0;ji<ncnr;ji++)
for(j=0;j<nc;j++)
cout << i<<","<<j<<" ";
</source>
il primo ciclo for fissa la riga sulla quale si vuole lavorare e il secondo ciclo for passa in rassegna le colonne di quella riga, le istruzioni fra parentesi graffe hanno a disposizione la coppia i,j che assume via via tutte le combinazioni riga,colonna possibili
<br />
[[File:Matrice3righe 4colonn indici.png|500px|Indici riga colonna di ciascuna cella matrice 3*4]]<br />
 
Gli indici, come nei vettori, partono da zero.Quando viene creata una matrice nella memoria del computer vengono prese un insieme di celle contigue (come nei vettori) e i dati sono memorizzati per riga.Ad esempio se dichiaro e inizializzo una matrice con il comando
int mat1[3][24] = { 323,415, 133,1725,3,12,66,78,16,21,12,45 };
visto che per memorizzare un intero servono 4byte , in memoria ram vengono prese 3248 celle contigue dove le prime 4 servono per memorizzare il primo valore, le successive 4 per memorizzare il secondo valore , le successive 4 per memorizzare il terzo valore etc, se la prima cella ha indirizzo 1000 il primo valore si trova all'indirizzo 1000 e occupa 4 byte , il valore successivo si trova all'indirizzo 1004 e occupa 4 byte, il terzo a 1008 e occupa 4 byte, in generale l'elemento l'elemento di riga i e colonna j si trova nella posizione 1000+ (i*dimcolonne+j)*numerobytenecessaripermemorizzarequeltipodidati<br />
[[File:Matrice3righe 4colonne allocazione in RAM.png|800px|Allocazione matrice 3*4 in memoria ram]]<br />
 
Gli indici, come nei vettori, partono da zero.Quando viene creata una matrice nella memoria del computer vengono prese un insieme di celle contigue (come nei vettori) e i dati sono memorizzati per riga.Ad esempio se dichiaro e inizializzo una matrice con il comando
int mat1[3][2] = { 3,4, 13,17,21,45 };
visto che per memorizzare un intero servono 4byte , in memoria ram vengono prese 32 celle contigue dove le prime 4 servono per memorizzare il primo valore, le successive 4 per memorizzare il secondo valore , le successive 4 per memorizzare il terzo valore etc, se la prima cella ha indirizzo 1000 il primo valore si trova all'indirizzo 1000 e occupa 4 byte , il valore successivo si trova all'indirizzo 1004 e occupa 4 byte, il terzo a 1008 e occupa 4 byte, in generale l'elemento l'elemento di riga i e colonna j si trova nella posizione 1000+ (i*dimcolonne+j)*numerobytenecessaripermemorizzarequeltipodidati
 
== Inserimento e stampa dati in una matrice ==
Line 33 ⟶ 51:
for(i=0;i<nr;i++)
{for(j=0;j<nc;j++)
{for(j=0;j<nc;j++)
cout<<mat[i][j];
cout<<endl;
}
return 0;
Line 44 ⟶ 61:
 
[[Categoria:Informatica 2 Liceo Scientifico Scienze Applicate|Matrici e Array]]
{{Avanzamento|25100%|17 gennaio 2015}}