Matrice pătratice în C++. Diagonala principală și secundară
În lecția anterioară am învățat cum funcționează matricele și cum se parcurg.
În această lecție vorbim despre matrice pătratice, un tip particular de matrice.
Ce este o matrice pătratică?
O matrice pătratică este o matrice particulară, cu același număr de linii
și de coloane — adică cu n == m
. Pentru simplitate, vom menționa doar
n
-ul, deoarece m
-ul are aceeași valoare. Matricea de acest tip are o serie
de particularități care se folosesc în anumite probleme.
Diagonala principală și diagonala secundară
Diagonala principală a unei matrice este diagonala care începe din colțul
stânga-sus și se termină în colțul dreapta-jos. Mai exact, un element
a[i][j]
aparține diagonalei principale dacă i == j
.
Similar, diagonala secundară este cealaltă diagonală, care începe din colțul
dreapta-sus și se termină în cel stânga-jos. Un element a[i][j]
aparține
diagonalei secundare dacă i + j == n + 1
, sau cu alte cuvinte, j == n - i + 1
(unde matricea este indexată de la 1
).
În imaginea de mai jos, diagonala principală este cea roșie, diagonala
secundară este cea albastră, elementul 4
(din mijloc) aparținând ambelor
diagonale.
Observații
Observăm că o matrice pătratică are n
elemente pe diagonala principală și
n
elemente pe diagonala secundară. Pentru diagonala principală, elementele
sunt: a[1][1], a[2][2], a[3][3], …, a[i][i], …, a[n][n]
. Pentru diagonala
secundară, elementele sunt: `a[1][n], a[2][n - 1], a[3][n - 2], …, a[i][n - i
- 1], …, a[n][1]`.
Așadar, avem următorii algoritmi pentru afișarea elementelor de pe cele două diagonale.
Afișarea elementelor de pe diagonala principală în C++
Următorul cod afișează elementele a[i][i]
, aflate pe diagonala principală:
#include <iostream>
using namespace std;
int n, m, a[101][101]; //n = nr linii, m = nr coloane, a = matricea
int main()
{
cin >> n >> m; //Citim numărul de linii și de coloane
//Citim matricea
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
//Afișăm elementele diagonalei principale
for(int i = 1; i <= n; i++) {
cout << a[i][i] << " ";
}
return 0;
}
Afișarea elementelor de pe diagonala secundară în C++
#include <iostream>
using namespace std;
int n, m, a[101][101]; //n = nr linii, m = nr coloane, a = matricea
int main()
{
cin >> n >> m; //Citim numărul de linii și de coloane
//Citim matricea
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
//Afișăm elementele diagonalei secundare
for(int i = 1; i <= n; i++) {
cout << a[i][n - i + 1] << " ";
}
return 0;
}
Probleme propuse
Setul de probleme 152 nu a fost găsit.
Alte resurse sau bibliografie
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0