Sari la conținut
LECȚIA 8.1 · INFORMATICĂ

Tablouri bidimensionale (matrice)

Declararea, parcurgerea, diagonalele și prelucrările clasice de matrice la BAC.

Conținut verificat

Declarare și citire

Citirea unei matrice
#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].

se trimit programului la citire

Primul indice = LINIA, al doilea = COLOANA.

Diagonalele (matrice pătratică n×n)

  1. Diagonala principală: elementele cu i=ji = j.
  2. Diagonala secundară: elementele cu i+j=n−1i + j = n - 1 (indexare de la 0).

Zonele față de diagonala principală: deasupra i<ji < j, sub ea i>ji > j.

Suma diagonalei principale:

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.

se trimit programului la citire

Prelucrări clasice

Suma pe fiecare linie:

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.

se trimit programului la citire

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 (123456789)\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix}: diagonala principală este 1, 5, 9 (suma 15); diagonala secundară este 3, 5, 7 (suma 15); suma liniei 0 este 6.

Greșeli frecvente

  1. Inversarea indicilor: a[i][j] e linia i, coloana j, nu invers.
  2. La matrice NEpătratice nu există diagonale: cerințele cu diagonale presupun n = m.
  3. La parcurgerea pe coloane, bucla exterioară e j, cea interioară i.
EXPLOREAZĂ INTERACTIV