Documente Academic
Documente Profesional
Documente Cultură
Alexandra Laicu
Matrice. Fundamente.
alexandralaicu.ro
Fie această matrice cu 10 linii si 10 coloane
0 1 2 3 4 5 6 7 8 9
iecare căsuța reprezintă un
0 1 2 3 4 5 6 7 8 9 10 element din matrice
1 11 12 13 14 15 16 17 18 19 20
de obicei numerotarea liniilor si
2 21 22 23 24 25 26 27 28 29 30
a coloanelor pornește de la 0
3 31 32 33 34 35 36 37 38 39 40
(numerele roz din stânga si
4 41 42 43 44 45 46 47 48 49 50
deasupra matricei)
5 51 52 53 54 55 56 57 58 59 60
8 81 82 83 84 85 86 87 88 89 90 tip nume[nr_linii][nr_coloane]
9 91 92 93 94 95 96 97 98 99 100 ex: int a[10][10]
alexandralaicu.ro
f
4 41 42 43 44 45 46 47 48 49 50 …
5 51 52 53 54 55 56 57 58 59 60
și 10 coloane numerotate de la
6 61 62 63 64 65 66 67 68 69 70
0 la 9
7 71 72 73 74 75 76 77 78 79 80
8 81 82 83 84 85 86 87 88 89 90
prima coloana are indexul 0
9 91 92 93 94 95 96 97 98 99 100 a doua coloana are indexul 1
…
alexandralaicu.ro
0 1 2 3 4 5 6 7 8 9 10 tip nume[nr_linii][nr_coloane]
1 11 12 13 14 15 16 17 18 19 20 ex: int a[10][10]
2 21 22 23 24 25 26 27 28 29 30
alexandralaicu.ro
31 32 33 34 35 36 37 38 39 40
2. sa determinam indicii
3
acestora
4 41 42 43 44 45 46 47 48 49 50
1 11 12 13 14 15 16 17 18 19 20
a[0][0]
2 21 22 23 24 25 26 27 28 29 30
a[4][5]
3 31 32 33 34 35 36 37 38 39 40
4 41 42 43 44 45 46 47 48 49 50
5 51 52 53 54 55 56 57 58 59 60 a[6][9]
6 61 62 63 64 65 66 67 68 69 70
a[7][1] 7 71 72 73 74 75 76 77 78 79 80
8 81 82 83 84 85 86 87 88 89 90
9 91 92 93 94 95 96 97 98 99 100
a[9][5]
alexandralaicu.ro index linie index coloană
Elementele se accesează cu ajutorul indicilor
a[0][0]
0 1 2 3 4 5 6 7 8 9 Este foarte important să nu
0 1 2 3 4 5 6 7 8 9 10 depășim limitele matricei
1 11 12 13 14 15 16 17 18 19 20 NU există linii sau coloane
2 21 22 23 24 25 26 27 28 29 30 mai mici decât primul index
3 31 32 33 34 35 36 37 38 39 40 (în cazul de față 0)
4 41 42 43 44 45 46 47 48 49 50
NU există linii sau coloane
5 51 52 53 54 55 56 57 58 59 60
mai mici decât ultimul index
6 61 62 63 64 65 66 67 68 69 70
(în cazul de față 9)
7 71 72 73 74 75 76 77 78 79 80
Exemple de accesări greșite:
8 81 82 83 84 85 86 87 88 89 90
71 72 73 74 75 76 77 78 79 80
Exemplu o matrice cu 10 linii și
8
10 coloane
9 81 82 83 84 85 86 87 88 89 90
f
f
2 21 22 23 24 25 26 27 28 29 30
in cod acest lucru se realizează
folosind tot 2 structuri
3 31 32 33 34 35 36 37 38 39 40
repetitive cu contor: prima
4 41 42 43 44 45 46 47 48 49 50
pentru coloane (j) si a doua
5 51 52 53 54 55 56 57 58 59 60
pentru linii (i)
6 61 62 63 64 65 66 67 68 69 70
for ( j=0; j < n; j++)
7 71 72 73 74 75 76 77 78 79 80
for (i=0; i < n; i++){
8 81 82 83 84 85 86 87 88 89 90
accesare element a[i][j]
9 91 92 93 94 95 96 97 98 99 100
}
alexandralaicu.ro
2 21 22 23 24 25 26 27 28 29 30
in cod acest lucru se realizează
folosind tot 2 structuri
3 31 32 33 34 35 36 37 38 39 40
repetitive cu contor: prima
4 41 42 43 44 45 46 47 48 49 50
pentru coloane (j) si a doua
5 51 52 53 54 55 56 57 58 59 60
pentru linii (i)
6 61 62 63 64 65 66 67 68 69 70
for (j=1; j<= n; j++)
7 71 72 73 74 75 76 77 78 79 80
for (i=1; i <= n; i++){
8 81 82 83 84 85 86 87 88 89 90
accesare element a[i][j]
9 91 92 93 94 95 96 97 98 99 100
}
alexandralaicu.ro
n = numarul de linii
m = numarul de coloane
Matrice pătratică => n = m
0 1 2 3 4 5 6 7 8 9 10
1 11 12 13 14 15 16 17 18 19 20
Toate elementele de pe aceeași
2 21 22 23 24 25 26 27 28 29 30
linie au același indice de linie și
3 31 32 33 34 35 36 37 38 39 40
diferă doar indicele de
4 41 42 43 44 45 46 47 48 49 50
coloană.
5 51 52 53 54 55 56 57 58 59 60
6 61 62 63 64 65 66 67 68 69 70
Din acest motiv este nevoie de
71 72 73 74 75 76 77 78 79 80
o singură structură repetitivă
7
pentru a parcurge o linie.
8 81 82 83 84 85 86 87 88 89 90
9 91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
n = numarul de linii
m = numarul de coloane
alexandralaicu.ro
0 1 2 3 4 5 6 7 8 9 10
1 11 12 13 14 15 16 17 18 19 20
Toate elementele de pe aceeași
2 21 22 23 24 25 26 27 28 29 30
coloană au același indice de
3 31 32 33 34 35 36 37 38 39 40
coloană și diferă doar indicele
4 41 42 43 44 45 46 47 48 49 50
de linie.
5 51 52 53 54 55 56 57 58 59 60
6 61 62 63 64 65 66 67 68 69 70
Din acest motiv este nevoie de
71 72 73 74 75 76 77 78 79 80
o singură structură repetitivă
7
pentru a parcurge o coloană.
8 81 82 83 84 85 86 87 88 89 90
9 91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
n = numarul de linii
m = numarul de coloane
alexandralaicu.ro
0 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10
1 11 12 13 14 15 16 17 18 19 20 2 11 12 13 14 15 16 17 18 19 20
2 21 22 23 24 25 26 27 28 29 30 3 21 22 23 24 25 26 27 28 29 30
3 31 32 33 34 35 36 37 38 39 40 4 31 32 33 34 35 36 37 38 39 40
4 41 42 43 44 45 46 47 48 49 50 5 41 42 43 44 45 46 47 48 49 50
5 51 52 53 54 55 56 57 58 59 60 6 51 52 53 54 55 56 57 58 59 60
6 61 62 63 64 65 66 67 68 69 70 7 61 62 63 64 65 66 67 68 69 70
7 71 72 73 74 75 76 77 78 79 80 8 71 72 73 74 75 76 77 78 79 80
8 81 82 83 84 85 86 87 88 89 90 9 81 82 83 84 85 86 87 88 89 90
9 91 92 93 94 95 96 97 98 99 100 10 91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
f
0 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10
1 11 12 13 14 15 16 17 18 19 20 2 11 12 13 14 15 16 17 18 19 20
2 21 22 23 24 25 26 27 28 29 30 3 21 22 23 24 25 26 27 28 29 30
3 31 32 33 34 35 36 37 38 39 40 4 31 32 33 34 35 36 37 38 39 40
4 41 42 43 44 45 46 47 48 49 50 5 41 42 43 44 45 46 47 48 49 50
5 51 52 53 54 55 56 57 58 59 60 6 51 52 53 54 55 56 57 58 59 60
6 61 62 63 64 65 66 67 68 69 70 7 61 62 63 64 65 66 67 68 69 70
7 71 72 73 74 75 76 77 78 79 80 8 71 72 73 74 75 76 77 78 79 80
8 81 82 83 84 85 86 87 88 89 90 9 81 82 83 84 85 86 87 88 89 90
9 91 92 93 94 95 96 97 98 99 100 10 91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
f
f
f
Matricea pătratică.
alexandralaicu.ro
Diagonalele matricei
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
1 2 3 4 5 6 7 8 9 10
Un element se a lă pe
11 12 13 14 15 16 17 18 19 20
diagonala principală dacă i
21 22 23 24 25 26 27 28 29 30
este egal cu j
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
Se veri ică acest lucru pentru
iecare element în parte, în
51 52 53 54 55 56 57 58 59 60
parcurgerea cu cele 2 structuri
61 62 63 64 65 66 67 68 69 70
repetitive cu contor:
71 72 73 74 75 76 77 78 79 80
if ( i == j )
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
f
alexandralaicu.ro
Indicii matricei
alexandralaicu.ro
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19 Indici de la 0
20 21 22 23 24 25 26 27 28 29
Se observa clar relația dintre
30 31 32 33 34 35 36 37 38 39
indicii i si j pentru
40 41 42 43 44 45 46 47 48 49
elementele a late pe
50 51 52 53 54 55 56 57 58 59
diagonala principală:
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79 i este egal cu j
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
alexandralaicu.ro
f
11 12 13 14 15 16 17 18 19 110
21 22 23 24 25 26 27 28 29 210 Indici de la 1
31 32 33 34 35 36 37 38 39 310
Se observa clar relația dintre
41 42 43 44 45 46 47 48 49 410
indicii i si j pentru
51 52 53 54 55 56 57 58 59 510
elementele a late pe
61 62 63 64 65 66 67 68 69 610
diagonala principală:
71 72 73 74 75 76 77 78 79 710
101 102 103 104 105 106 107 108 109 1010
alexandralaicu.ro
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19 Indici de la 0
20 21 22 23 24 25 26 27 28 29
Se observa clar relația dintre
30 31 32 33 34 35 36 37 38 39
indicii i si j pentru
40 41 42 43 44 45 46 47 48 49
elementele a late pe
50 51 52 53 54 55 56 57 58 59
diagonala principală:
60 61 62 63 64 65 66 67 68 69
90 91 92 93 94 95 96 97 98 99
alexandralaicu.ro
f
11 12 13 14 15 16 17 18 19 110
21 22 23 24 25 26 27 28 29 210 Indici de la 1
31 32 33 34 35 36 37 38 39 310
Se observa clar relația dintre
41 42 43 44 45 46 47 48 49 410
indicii i si j pentru
51 52 53 54 55 56 57 58 59 510
elementele a late pe
61 62 63 64 65 66 67 68 69 610
diagonala principală:
71 72 73 74 75 76 77 78 79 710
101 102 103 104 105 106 107 108 109 1010
alexandralaicu.ro
alexandralaicu.ro
alexandralaicu.ro
Cum ne dăm seama ca un element este deasupra diagonalei principale?
alexandralaicu.ro
00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 110
10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 210
20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 310
30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 410
40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 510
50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 610
60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 710
70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 810
80 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 910
90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 109 1010
alexandralaicu.ro
Cum ne dăm seama ca un element este dedesubtul diagonalei principale?
alexandralaicu.ro
00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 110
10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 210
20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 310
30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 410
40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 510
50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 610
60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 710
70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 810
80 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 910
90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 109 1010
alexandralaicu.ro
00 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 17 18 19 110
10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 210
20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 310
30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 410
40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 510
50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 610
60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 710
70 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 810
80 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 910
90 91 92 93 94 95 96 97 98 99 101 102 103 104 105 106 107 108 109 1010
alexandralaicu.ro
Zonele matricei
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
Zonele matricei
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
61 62 63 64 65 66 67 68 69 70
NORD EST
71 72 73 74 75 76 77 78 79 80 SUD VEST
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
alexandralaicu.ro
f
f
Zona NORD
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Se a lă
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
deasupra diagonalei
principale i < j
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 deasupra diagonalei
71 72 73 74 75 76 77 78 79 80 secundare i + j < n-1 (n+1)
81 82 83 84 85 86 87 88 89 90
S
P
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
alexandralaicu.ro
f
Zona SUD
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Se a lă
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
dedesubtul diagonalei
principale i > j
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 dedesubtul diagonalei
71 72 73 74 75 76 77 78 79 80 secundare i + j < n-1 (n+1)
81 82 83 84 85 86 87 88 89 90
S
P
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
alexandralaicu.ro
f
Zona EST
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Se a lă
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
deasupra diagonalei
principale i < j
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 dedesubtul diagonalei
71 72 73 74 75 76 77 78 79 80 secundare i + j > n-1 (n+1)
81 82 83 84 85 86 87 88 89 90
S
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
alexandralaicu.ro
f
Zona VEST
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
Se a lă
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
dedesubtul diagonalei
principale i > j
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 deasupra diagonalei
71 72 73 74 75 76 77 78 79 80 secundare i + j < n-1 (n+1)
81 82 83 84 85 86 87 88 89 90
S
P
91 92 93 94 95 96 97 98 99 100
alexandralaicu.ro
f
alexandralaicu.ro