InfoBook.ro ← Harta anului
Modul 06a · Matrice numerică (tablou 2D)
Modul 06a · Conținut 1.4 · ★ BAC

Datele pe două dimensiuni

Vectorul era un rând de cutii. Matricea e o TABLĂ: rânduri și coloane, ca un catalog sau o tablă de șah. E reprezentarea C++ a modelului „listă de liste" (1.4) — și inima subiectelor de BAC cu tablouri bidimensionale.

🎯 Obiectiv 1Declari o matrice și accesezi elementul a[i][j] — linia i, coloana j.
🎯 Obiectiv 2O citești și o parcurgi cu două bucle imbricate — pe linii și pe coloane.
🎯 Obiectiv 3Stăpânești matricea pătratică: diagonale și cele patru zone.
1

Ce e o matrice și cum ajungi la un element

O matrice cu n linii și m coloane e ca o foaie de catalog: fiecare căsuță are DOUĂ coordonate — linia și coloana.

1int a[100][100]; // dimensiune maximă
2int n = 3, m = 4; // folosim n×m
3// a[i][j] = elementul de pe
4// linia i, coloana j
5a[1][2] = 7; // linia 1, coloana 2
Regula de aur: primul indice = linia (i), al doilea = coloana (j). Ambele pornesc de la 0. „a[i][j]" se citește „a de i, j".

👆 click pe o căsuță — vezi coordonatele ei

click pe orice element din matrice
2

Citirea și parcurgerea — două bucle imbricate

O buclă pentru LINII, în interiorul ei o buclă pentru COLOANE. Flowchart, cod și exemplu, rulate în paralel. Apasă Pas:

DA NU DA NU START citește n, m i ← 0 i < n ? j ← 0 j < m ? citește a[i][j] j ← j + 1 i ← i + 1 STOP
Variabile
n × m
i (linia)
j (coloana)
Apasă „Pas" — bucla exterioară trece prin linii, cea interioară umple fiecare linie, celulă cu celulă. 👣
Ordinea imbricării: pentru CITIREA pe linii (cum vine în fișier), i (linia) e bucla EXTERIOARĂ, j (coloana) cea interioară. Ca să parcurgi pe COLOANE, doar inversezi buclele: j exterior, i interior. Aceleași două bucle, altă ordine.
3

Parcurgeri: pe linii vs pe coloane

Aceeași matrice, două ordini de vizitare. Apasă și privește drumul — plus suma pe fiecare direcție.

alege o direcție de parcurgere 👆
1// pe LINII
2for (i=0; i<n; i++)
3 for (j=0; j<m; j++)
4 ...a[i][j]
1// pe COLOANE
2for (j=0; j<m; j++)
3 for (i=0; i<n; i++)
4 ...a[i][j]
Sumele utile de BAC: suma liniei i = parcurgi j de la 0 la m−1 însumând a[i][j] · suma coloanei j = parcurgi i însumând a[i][j] · suma întregii matrice = ambele bucle. Schimbi doar CE aduni, scheletul rămâne cele două for-uri.
4

Matricea pătratică: diagonale și zone

Când n = m, apar reperele de aur ale BAC-ului: cele două diagonale și cele patru zone dintre ele. Apasă un buton și vezi condiția + celulele:

alege o diagonală sau o zonă 👆
Diagonalele (n×n):
• principală: i == j — de sus-stânga la jos-dreapta
• secundară: i + j == n − 1 — de sus-dreapta la jos-stânga
Cele 4 zone (tăiate de AMBELE diagonale):
• Nord: i < j și i + j < n−1
• Sud: i > j și i + j > n−1
• Vest: i > j și i + j < n−1
• Est: i < j și i + j > n−1
Trucul care rezolvă jumătate din problemele cu matrice: orice „triunghi" sau „zonă" e o CONDIȚIE pe i și j. Găsești condiția (cu = sau fără), o pui într-un if în interiorul celor două bucle, și gata. Deasupra principalei? if (i < j). Pe secundară? if (i+j == n-1).
5

Verificare rapidă

Cinci întrebări — în stil BAC (matrice 5×5, indexată de la 0).

6

Fișa de sinteză

Tabloul 2D, condensat.

Declarare: int a[100][100]; folosești primele n linii × m coloane. a[i][j] = linia i, coloana j (de la 0).
Parcurgere: două for imbricate. Pe linii: i exterior, j interior. Pe coloane: invers.
Diag. principală: i == j · Diag. secundară: i + j == n − 1 (doar la matrice pătratică!).
Deasupra/sub principală: i < j / i > j · față de secundară: i + j < n−1 / i + j > n−1.
Cele 4 zone = combinația celor două condiții (Nord/Sud/Vest/Est) — un if cu &&.
Orice zonă = o condiție pe i, j pusă într-un if în cele două bucle. Ăsta e tot secretul.
Exersează pe pbinfo.ro — categoria „Tablouri bidimensionale": sume pe linii/coloane, diagonale, zone triunghiulare.
7

📌 Temă pentru acasă

Trei programe cu matrice, în C++.

  1. Suma pe fiecare linie. Citește o matrice n×m și afișează, pentru fiecare linie, suma elementelor ei.
  2. Suma diagonalelor. Pentru o matrice pătratică n×n, afișează suma diagonalei principale și a celei secundare. Bonus: ce element aparține AMBELOR? (răspunde când e n impar).
  3. Zona Nord. Afișează suma elementelor din zona Nord (sus) a unei matrice pătratice — adică acolo unde i < j și i + j < n−1.
Provocare: tipărește o matrice n×n în care fiecare element e „zona" lui: N, S, V, E, ori „P"/"S" pe diagonale. E harta zonelor, desenată de programul tău.
← anteriorModul 06 · Matrice de caractere urmează →Modul 07 · Șiruri Python & str