Declarare și citire
#include <iostream>
using namespace std;
int main() {
int a[25][25], n, m;
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
cout << a[0][0] << " " << a[n - 1][m - 1];
return 0;
}Atenție: In Pascal elementul se scrie a[i, j], cu virgula intre indici; in C, C++ si Python se scrie a[i][j].
Primul indice = LINIA, al doilea = COLOANA.
Diagonalele (matrice pătratică n×n)
- Diagonala principală: elementele cu .
- Diagonala secundară: elementele cu (indexare de la 0).
Zonele față de diagonala principală: deasupra , sub ea .
Suma diagonalei principale:
#include <iostream>
using namespace std;
int main() {
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, n = 3;
int s = 0;
for (int i = 0; i < n; i++)
s += a[i][i];
cout << s;
return 0;
}Atenție: Pe diagonala principala indicele de linie e egal cu cel de coloana. Pe diagonala secundara suma lor e constanta.
Prelucrări clasice
Suma pe fiecare linie:
#include <iostream>
using namespace std;
int main() {
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, n = 3, m = 3;
for (int i = 0; i < n; i++) {
int s = 0;
for (int j = 0; j < m; j++) s += a[i][j];
cout << s << " ";
}
return 0;
}Atenție: Suma se pune pe zero inaintea fiecarei linii, nu o singura data la inceput. Altfel s-ar aduna toate liniile la un loc.
Maximul din matrice: inițializezi cu a[0][0] și compari cu toate.
Transpusa: t[j][i] = a[i][j] (liniile devin coloane).
Exemplu de urmărire
Pentru matricea : diagonala principală este 1, 5, 9 (suma 15); diagonala secundară este 3, 5, 7 (suma 15); suma liniei 0 este 6.
Greșeli frecvente
- Inversarea indicilor: a[i][j] e linia i, coloana j, nu invers.
- La matrice NEpătratice nu există diagonale: cerințele cu diagonale presupun n = m.
- La parcurgerea pe coloane, bucla exterioară e j, cea interioară i.