Matricele și parcurgerea lor
Matricele sunt stocate în calculator ca tablouri bidimensionale cu elemente accesate prin doi indici: i pentru linii și j pentru coloane. Pentru o matrice cu n linii și m coloane, avem în total n×m elemente.
Pentru citirea matricei folosim două cicluri for imbricate:
for(i=0; i<m; i++) // parcurgem linie cu linie
for(j=0; j<n; j++) // parcurgem coloană cu coloană
cin >> mat[i][j];
Similar, afișarea matricei se face tot cu două cicluri:
for(i=0; i<m; i++) {
for(j=0; j<n; j++)
cout << mat[i][j] << ' ';
cout << endl; // trecem la linia următoare
}
💡 Sfat util: Când lucrezi cu matrici, imaginează-ți că i reprezintă linia (direcția verticală) și j reprezintă coloana (direcția orizontală). Acest lucru te va ajuta să nu confunzi indicii.
Matricea pătratică și diagonalele ei
O matrice pătratică are numărul de linii egal cu numărul de coloane. Ea are două diagonale importante:
- Diagonala principală: pornește din colțul stânga-sus și se termină în dreapta-jos elementeleundei=j
- Diagonala secundară: pornește din colțul dreapta-sus și se termină în stânga-jos elementeleundei+j=n+1pentruindexaredela1,saui+j=n−1pentruindexaredela0
Pentru a parcurge diagonala principală:
for(i=1; i<=n; i++)
// prelucrăm mat[i][i]
Pentru a parcurge diagonala secundară:
for(i=1; i<=n; i++)
// prelucrăm mat[i][n+1-i]
Zonele unei matrice pătratice
O matrice pătratică poate fi împărțită în zone delimitate de diagonale:
- Zona de Nord: deasupra diagonalei principale (i<j) și sub diagonala secundară i+j<n+1
- Zona de Est: deasupra diagonalei principale (i<j) și deasupra diagonalei secundare i+j>n+1
- Zona de Sud: sub diagonala principală (i>j) și deasupra diagonalei secundare i+j>n+1
- Zona de Vest: sub diagonala principală (i>j) și sub diagonala secundară i+j<n+1
Pentru a parcurge elementele deasupra diagonalei principale:
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
// prelucrăm mat[i][j]
Pentru a parcurge elementele sub diagonala principală:
for(i=2; i<=n; i++)
for(j=1; j<i; j++)
// prelucrăm mat[i][j]