Documente Academic
Documente Profesional
Documente Cultură
Declararea matricelor
Declararea tablourilor bidimensionale (matrice) se face în C/C++ similar cu a tablourilor
unidimensionale, dar trebuie precizate două dimensiuni fizice, maximale: numărul
maxim de linii și numărul maxim de coloane ale matricei:
tipDeBază denumire[NumarLinii][NumarColoane];
de exemplu:
int A[5][10];
Mai sus s-a declarat un tablou bidimensional (o matrice) cu 5 linii și 10 coloane. Ni-l
putem imagina astfel (valorile sunt aleatorii):
Parcurgerea matricei
Parcurgerea presupune accesarea elementelor curente ale matricei, într-o anumită
ordine – de regulă aceasta se face pe linii, de sus în jos și de la stânga la dreapta:
int n, m, A[100][100];
...
for(int i = 1 ; i <= n ; i ++)
for(int j = 0 ; j < m ; j ++)
.....
Parcurgerea unei linii
Toate elementele de pe o anumită linie au același indice de linie și diferă prin indicele
de coloană. Pentru a parcurge o anumită linie k, vom parcurge indici de coloană:
Tablouri patratice
Un tablou bidimensional este tablou pătratic sau matrice pătratică dacă numărul de
linii este egal cu numărul de coloane.
int n, A[100][100];
Diagonala principală
Parcurgerea elementelor de pe diagonala principală:
Diagonala secundară
Parcurgerea elementelor de pe diagonala secundară:
(i<j) (i>j)
Probleme
666.
Cerința
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine câte
dintre elementele situate pe linii cu indici pari sunt prime.
Date de intrare
Programul citește de la tastatură numerele n m, iar apoi n șiruri cu câte m numere naturale,
reprezentând elementele matricei.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea căutată.
Restricții și precizări
1 ≤ n , m ≤ 100
elementele matricei sunt numere naturale mai mici decât 1.000.000
liniile matricei sunt numerotate de 1 la n, iar coloanele de la 1 la m
Exemplu
Intrare
4 3
5 12 10
3 9 1
7 10 1
10 9 3
Ieșire
Explicație
Cele 2 valori prime determinate sunt cele îngroșate mai jos:
5 12 10
3 9 1
7 10 1
10 9 3
Observăm că matricea conține și alte elemente prime, dar ele nu sunt situate pe linii cu
indici pari.
#include <iostream>
using namespace std;
int main() {
int n, m, a[101][101], C = 0;
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
Date de intrare
Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin
spații, reprezentând elementele matricei, linie cu linie.
Date de ieșire
Programul afișează pe ecran elementele matricei transformate, câte un linie a matricei pe o linie a
ecranului, elementele de pe o linie fiind separate prin câte un spațiu.
Restricții și precizări
1 ≤ m, n ≤ 100
elementele matricei vor fi mai mici decât 1.000.000
Exemplu
Date de intrare
4 6
4 20 15 23 18 9
1 8 23 22 14 18
17 15 13 18 12 15
3 18 8 20 12 5
Date de ieșire
20 15 23 18 9 4
8 23 22 14 18 1
15 13 18 12 15 17
18 8 20 12 5 3
#include <iostream>
using namespace std;
int main() {
int n, m, a[101][101];
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m;
j++)
cin >> a[i][j];
313.
Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi diferenţa în
valoare absolută dintre sumele elementelor de pe cele două diagonale.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin
spaţii, reprezentând elementele matricei, linie cu linie.
Date de ieşire
Programul afișează pe ecran numărul D, reprezentând valoarea calculată.
Restricţii şi precizări
1 ≤ n ≤ 20
elementele matricei vor fi mai mici decât 10000
Exemplu
Date de intrare
4
8 3 3 7
1 1 6 5
8 7 1 1
9 8 7 1
Date de ieșire
18
#include <iostream>
using namespace std;
int main() {
int n, a[101][101], S1 = 0, S2 = 0;
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> a[i][j];
for (int i = 1; i <= n; i++)
S1 += a[i][i];
for (int i = 1; i <= n; i++)
S2 += a[i][n - i + 1];
cout << abs(S2 - S1);
return 0;
}
780.
Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi cel mai mare
divizor comun al sumei elementelor de deasupra diagonalei principale și al sumei
elementelor de sub diagonala principală.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin
spaţii, reprezentând elementele matricei, linie cu linie.
Date de ieşire
Programul afișează pe ecran numărul D, reprezentând valoarea calculată.
Restricţii şi precizări
1 ≤ n ≤ 20
elementele matricei vor fi mai mici decât 1.000.000
cel puţin un element situat deasupra diagnalei principale şi cel puţin un element
situat sub diagonala principală sunt nenule
Exemplu
Date de intrare
4
8 3 5 6
5 5 6 5
3 8 6 5
8 4 8 8
Date de ieșire
#include <iostream>
using namespace std;
int main() {
int n, a[101][101], S1 = 0, S2 = 0;
cin >> n;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> a[i][j];
for (int i = 1; i < n; i++)
for (int j = i + 1; j <= n; j++)
S1 += a[i][j];
786.
Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se construiască o matrice
care să fie simetrica față de diagonala principală a matricei date.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii,
reprezentând elementele matricei, linie cu linie.
Date de ieşire
Programul afișează pe ecran elementele matricei construite, câte un linie a matricei pe o linie a
ecranului, elementele de pe o linie fiind separate prin câte un spațiu.
Restricţii şi precizări
1 ≤ n ≤ 100
elementele matricei vor fi mai mici decât 1.000.000
două matrice A și B sunt simetrice față de diagonala principală dacă A[i,j]=B[j,i],
pentru orice i,j.
Exemplu
Date de intrare
4
3 1 8 5
7 8 5 1
2 2 6 7
9 8 1 3
Date de ieșire
3 7 2 9
1 8 2 8
8 5 6 1
5 1 7 3
#include <iostream>
Date de intrare
Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin
spaţii, reprezentând elementele matricei, linie cu linie.
Date de ieşire
Programul afișează pe ecran suma căutată S.
Restricţii şi precizări
1 ≤ m,n ≤ 100
elementele matricei vor fi mai mici decât 10000
Exemplu
Date de intrare
4 6
4 20 15 23 18 9
1 8 23 22 14 18
17 15 13 18 12 15
3 18 8 20 12 5
Date de ieșire
192
#include <iostream>
using namespace std;
int main() {
int n, m, a[101][101], s = 0;
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++){
cin >> a[i][j];
if (a[i][j] % 2 == 0) s += a[i][j];
}
cout << s;
return 0;
}
658.
Cerința
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine suma
elementelor de pe fiecare linie.
Date de intrare
Programul citește de la tastatură numerele n m, iar apoi n șiruri cu câte m numere naturale,
reprezentând elementele matricei.
Date de ieșire
Programul va afișa pe ecran n numere, separate prin câte un spațiu reprezentând suma
elementelor de pe fiecare linie, de sus în jos.
Restricții și precizări
1 ≤ n , m ≤ 100
elementele matricei sunt numere naturale mai mici decât 1.000.000
Exemplu
Intrare
3 4
5 5 10 5
3 9 1 2
4 10 1 2
Ieșire
25 15 17
#include <iostream>
using namespace std;
int main() {
int n, m, a[101][101], s;
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
Date de intrare
Programul citește de la tastatură numerele n m, iar apoi n șiruri cu câte m numere naturale,
reprezentând elementele matricei.
Date de ieșire
Programul va afișa pe ecran n numere, separate prin câte un spațiu, reprezentând valorile
obținute pentru fiecare linie, de sus în jos.
Restricții și precizări
1 ≤ n , m ≤ 100
elementele matricei sunt numere naturale mai mici decât 1.000.000
Exemplu
Intrare
3 4
5 5 10 5
3 9 1 9
4 10 1 2
Ieșire
15 13 7
#include <iostream>
using namespace std;
int main() {
int n, m, a[101][101], maxi, s;
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];