[Teorie] Tablouri bidimensionale (Matrice)
Posted: Sun Sep 20, 2026 11:08 pm
Tablouri bidimensionale (Matrice)
Declarare • parcurgere pe linii/coloane • diagonale • probleme clasice
Nivel: Mediu | Durata: ~35 min
Matricea: vector de vectoriNivel: Mediu | Durata: ~35 min
Tabel cu linii si coloane. Elementul e identificat unic prin doi indici: linia i, coloana j.
1. Declarare si coordonate
Code: Select all
int a[50][50]; // 50 linii, 50 coloane
float m[10][20]; // 10 linii, 20 coloane
a[0][0] = 5; // coltul stanga-sus
cout << a[2][3]; // linia 2, coloana 3Code: Select all
a[L][C] | Col0 Col1 Col2 Col3
Linia 0 | a00 a01 a02 a03
Linia 1 | a10 a11 a12 a13
Linia 2 | a20 a21 a22 a23Primul for fixeaza linia, al doilea "matura" coloanele.
Code: Select all
int n, m, a[50][50];
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j]; // citire
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cout << a[i][j] << " ";
cout << endl; // rand nou dupa fiecare linie!
}Diagonala principala wrote:Stanga-sus -> dreapta-jos. Conditie: i == j (a00, a11, a22...).
4. Probleme clasiceDiagonala secundara wrote:Dreapta-sus -> stanga-jos. Conditie (0-based): i + j == n - 1 (a02, a11, a20 la n=3). Cu indexare de la 1: i + j == n + 1. Fii consistent!
Suma totala wrote:Acumulam in parcurgerea completa.Code: Select all
int sumaTotala = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) sumaTotala = sumaTotala + a[i][j];
Intrebari? Postati mai jos.Suma pe fiecare linie wrote:RESETAM suma la 0 la inceputul fiecarei linii!Code: Select all
for (int i = 0; i < n; i++) { int sumaLinie = 0; for (int j = 0; j < m; j++) sumaLinie = sumaLinie + a[i][j]; cout << "Linia " << i << ": " << sumaLinie << endl; }
Sursa: bac-2026.vercel.app/lessons/14