Didaxis
lecție · Informatică

Prelucrări în matrice

Linii, coloane, vecinătăți și acumulări.

Se face în:
Clasa a X-a
Actualizat la: 30 octombrie 2026
1pe scurtstratul 1 din 3 · rezumatul lecției

Pe scurt

Prelucrarea unei matrice înseamnă aplicarea unei operații tuturor elementelor sau unei regiuni definite: o linie, o coloană, o diagonală ori elementele care satisfac o condiție. Alegerea indicilor din bucle trebuie să corespundă exact regiunii. Pentru liniile și , suma celei de-a doua coloane este .

Desen la lecția „Prelucrări în matrice”
2în detaliustratul 2 din 3 · pentru clasă și Bacalaureat

În detaliu

Prelucrarea unei matrice înseamnă aplicarea unei operații tuturor elementelor sau unei regiuni definite: o linie, o coloană, o diagonală, o zonă triunghiulară sau elementele care respectă o condiție. Alegerea limitelor și a ciclurilor trebuie să corespundă exact regiunii: pentru o linie se folosește un singur ciclu după , pentru toate liniile unul exterior după , iar acumulatorul unei linii se reinițializează la începutul fiecărei linii. Pentru vecinătăți, indicii vecinilor sunt , , și în vecinătatea cu patru direcții; la marginea matricei, unii dintre ei ies din matrice și trebuie verificați înainte de acces.

Exemplul 1 — suma fiecărei linii.

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; ++i) {
    int suma = 0;
    for (int j = 0; j < 3; ++j)
        suma += a[i][j];
    cout << suma << " ";
}

Pentru prima linie suma ia valorile 1, 3, 6; pentru a doua 4, 9, 15. Se afișează 6 15. Variabila suma este resetată la 0 la începutul fiecărei linii. Dacă ar fi inițializată doar înaintea buclei exterioare, valorile afișate ar fi 6 21, pentru că a doua sumă ar include și linia întâi.

Exemplul 2 — vecinii unei celule. În matricea cu liniile , , celula interioară , cu valoarea 5, are patru vecini: sus 2, jos 8, stânga 4, dreapta 6. Suma lor este . Celula , din colț, are doar doi vecini în matrice, și , adică 4 și 2, cu suma 6; ceilalți doi, și , ar ieși din matrice. Pentru un caz general, fiecare vecin se adună numai dacă și .

Exemplul 3 — transpunerea unei matrice pătratice. Transpusa înlocuiește elementul cu . Pentru o matrice pătratică, ea se obține schimbând între ele perechile de elemente simetrice față de diagonala principală. Se parcurg numai pozițiile de deasupra diagonalei, cu , pentru ca fiecare pereche să fie schimbată o singură dată.

for (int i = 0; i < 3; ++i)
    for (int j = i + 1; j < 3; ++j) {
        int aux = a[i][j];
        a[i][j] = a[j][i];
        a[j][i] = aux;
    }

Matricea cu liniile , , devine , , . Dacă ciclul interior ar parcurge toate coloanele, fiecare pereche ar fi schimbată de două ori și matricea ar rămâne neschimbată. Pentru o matrice dreptunghiulară cu linii și coloane transpusa are linii și coloane, deci nu se poate face pe loc; rezultatul se scrie într-o a doua matrice, b[j][i] = a[i][j]. Pentru liniile și , transpusa are trei linii: , și .

Exemplul 4 — maximul pe fiecare linie. Pentru matricea cu liniile și se caută maximul fiecărei linii.

int a[2][3] = {{3, 9, 2}, {7, 1, 8}};
for (int i = 0; i < 2; ++i) {
    int mx = a[i][0];
    for (int j = 1; j < 3; ++j)
        if (a[i][j] > mx)
            mx = a[i][j];
    cout << mx << " ";
}

Pe prima linie mx pornește de la 3, devine 9 la și rămâne 9 după ; pe a doua pornește de la 7, rămâne 7 la și devine 8 la . Se afișează 9 8. Pentru linia , o inițializare cu 0 ar da greșit 0; inițializarea cu primul element al liniei dă corect .

3pentru admiterestratul 3 din 3 · pentru examene

Pentru admitere

La un program care schimbă elemente, urmărește matricea după fiecare atribuire. Transpunerea schimbă liniile cu coloanele; pentru o matrice pătratică se poate face prin schimburi numai deasupra diagonalei principale, astfel încât fiecare pereche să fie tratată o dată. Pentru una dreptunghiulară, dimensiunile rezultatului se inversează. Pentru vecinătăți, înainte de acces testează limitele (în matricea a exemplului, celula centrală este singura cu patru vecini): pentru celula vecinii cu indici negativi nu există. Verifică și locul în care se resetează acumulatorii: o sumă pe linii cere resetare la fiecare linie, iar o sumă totală nu.

Exemplu în formatul examenului. Ce se afișează în urma executării secvenței de mai jos?

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int s = 0;
for (int i = 0; i < 2; ++i) {
    for (int j = 0; j < 3; ++j)
        s += a[i][j];
    cout << s << ' ';
}
  • a) 6 15
  • b) 6 21
  • c) 21 21
  • d) 1 4

Răspunsul corect este b). Variabila s este declarată o singură dată, înaintea ciclurilor, și nu este resetată la trecerea la linia următoare. După prima linie și se afișează 6; pe a doua linie se continuă de la 6: , deci se afișează 21. Varianta a) ar fi corectă dacă s = 0 ar fi scris în ciclul exterior, înaintea ciclului interior.

Poți verifica numărarea vecinilor pe matricea : celula centrală are 4 vecini, cele 4 celule de pe laturi au câte 3, iar cele 4 colțuri au câte 2. Suma este , adică de două ori numărul perechilor de celule vecine, 12.

Greșeli frecvente

  • Greșit: acumulatorul unei sume pe linii se inițializează o singură dată, înaintea ambelor cicluri.
    Corect: se reinițializează la începutul fiecărei linii.
  • Greșit: transpunerea unei matrice pătratice se face parcurgând toate perechile cu schimb.
    Corect: se parcurge doar jumătatea de deasupra diagonalei, altfel schimburile se anulează.
  • Greșit: celulele de la margine au tot patru vecini în matrice.
    Corect: vecinii care ies din matrice trebuie omiși.
în contul tăuPremium

Testează-te pe această lecție

Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.

Înainte și după

Surse și referințe

Redactare proprie, conform programei:

  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X; plan de încadrare: OMECI 3410/2009, anexa 1, p. PDF 1–14; forum.isj.hd.edu.ro; filiera tehnologică: OMECI 3412/2009, anexa 2, tabel X, legislatie.just.ro
  • OMECI 5099/2009, anexa 5, Informatică, p. 4–5, clasa X; rocnee.eu
  • UNSTPB, Regulament admitere licență 2026, Anexa II-1.2 p. Anx II-14 și Anexa XI-3 p. Anx XI-6–7 (PDF p. 64, 120–121); admitere.pub.ro
  • OMECTS 4800/2010, anexa 2, Informatică, p. 3–4; edu.ro

Documente consultate

  • UNSTPB, admitere 2026, anexa XI-3, p. Anx XI-6–7
  • Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
  • Programa școlară de informatică, clasa a IX-a, matematică-informatică (OMEC 6930/2025, anexa 42); rocnee.eu
  • Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației, p. 3–4; edu.ro
  • Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro

Desene: Redactare proprie (desen original), conform Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu

lecțiile sunt gratuite

Ai citit lecția. Acum verifică-te.