Sunteți pe pagina 1din 33

25.03.

2022

#MATRICI
clasa a IX-a
start
1 Scurtă recapitulare :
Structura repetitivă for 5 Matrici pătratice

Utilizarea matricilor :
2 În matematică și programare 6 Eliminări de linii și coloane

3 Declararea & inițializarea


matricilor victorie!
4 Parcurgerea unei matrici
Scurtă recapitulare :
1 Structura repetitivă for
structura repetitivă for poate fi văzută ca o . . . călătorie

for( int i=1; i<= final; i++ )


{
…. pasul
( unde staționăm )
}
destinație
finală

de unde
pornim
1 int S = 0 ;
2 int v[ 101 ] ; // declarare vector

3 for( int i=1; i<= 100; i++ )


4 {
5 v[ i ] = i;
6 S = S + v[ i ]; Ce face
7 } programul?
8 cout<< S;
Utilizarea matricilor :
2 În matematică și programare
Se numeşte matrice cu m linii şi n coloane
(sau de tip                  )
un tablou cu m linii şi n coloane:

          
j=
recunoaște
1 2 3 4 elementele!

1 7 1 3 5
2 1 18 9 6
matrice [ i ] [ j ]

i= = element de pe
linia i & coloana j

3 2 10 4 0
exemple
de utilizari?

• matricile au fost utilizate


de dinainte de Hristos.

prima data, în China:


hai să
THE 9 CHAPTERS programăm!!!
ON THE MATHEMATICAL ART

rezolvări de grafică criptografie baze de


sisteme de computerizată date
ecuații
Declararea & inițializarea
3 matricilor
Matrice
=
Tablou
bidimensional
Declararea matricilor în C++ se face similar cu cea a vectorilor,
dar trebuie precizate două dimensiuni maximale, nu doar 1:
numărul maxim de linii și numărul maxim de coloane ale matricei.

tipDeBază denumire [ nr_max_linii ] [ nr_max_coloane ];

• int (nr. întregi, ocupă 4 bytes)


de exemplu, de exemplu,
• bool (true or false, ocupă 1 byte) vrem max. 50 coloane,
vrem max. 100 linii,
• char (caractere, ocupă 1 byte ) deci punem 101 deci punem 51
• long (nr. lungi, ocupă 8 bytes)
• double (nr. cu virgulă precise, ocupă 8 bytes)
• float (nr. cu virgulă, ocupă 4 bytes) dacă
folosim indexarea de la 1,
în detrimentul celei implicite
pentru probleme care se focusează pe memorie, de la 0, adăugăm +1
este foarte importantă alegerea unui tip de dată
care să nu ocupe mult spațiu. la numărul de linii
și de coloane
Numărul maxim de linii / coloane

NU este, de cele mai multe ori, egal

cu numărul de linii/coloane
cu care lucrăm.

Spațiu total de memorie


Cu ce lucrăm de obicei
alocată matricii
Inițializarea matricilor

• când sunt declarate global, matricele sunt inițializate cu zero.

• când sunt declarate local, cu valori aleatoare de pe stivă.

De obicei, nu dorim ca matricea să aibă valori


pe care nu le putem controla,
așa că pur și simplu citim elementele matricii
printr-un for imbricat ( în secțiunea următoare).
4 Parcurgerea matricilor
O definiție informală a matricilor și a vectorilor:

o matrice cu m x n elemente =
m vectori cu n elemente unul sub altul

sau

un vector cu n elemente =
matrice cu 1 linie și n coloane
Parcurgerea
matricilor
=
for- uri
imbricate
Parcurgerea matricilor pe linii

for( int i=1; i<= nr_linii; i++ )


{ //când i ia o valoare, ne aflăm pe o anumită linie
for( int j=1; j<= nr_coloane; j++ )
{ // ne aflăm pe linia stabilită înainte
// trecem din coloană în coloană
// când se termină for-ul acesta, continuă celălalt
}
}
Parcurgerea matricilor pe coloane

for( int j=1; j<= nr_coloane; j++ )


{ //când j ia o valoare, ne aflăm pe o anumită coloană for( int
i=1; i<= nr_linii; i++ )
{ // ne aflăm pe coloana stabilită înainte
// trecem de pe linie pe linie
// când se termină for-ul acesta, continuă celălalt
}
}
// declarare matrice a

for( int i=1; i<= nr_linii; i++ )


{
for( int j=1; j<= nr_coloane; j++ )
{
cin >> a[ i ][ j ]; // citire matrice
}
}
Citire matrice
// declarare matrice a

for( int i=1; i<= nr_linii; i++ )


{
for( int j=1; j<= nr_coloane; j++ )
{
cout << a[ i ][ j ]<<“ “;
}
cout<<endl;
} Afișare matrice
3 linii
4 coloane
for( int i=1; i <= 3; i++ )

7 1 3 5 {
for( int j=1; j <= 4; j++ )
{

1 18 9 6 }
cout << a[ i ][ j ]<<“ “;

cout<<endl;
}
2 10 4 0 // afișare matrice
5 Mătrici pătratice
Matrici pătratice:

numărul de linii
=
numărul de coloane
=
n
1 2 3 4 j
1
2
i
3
4

diagonalele
diagonala diagonala
principala secundară

i=j i+j=n+1
1 2 3 4 j
1
2
i
3
4
• Elementele de sub diagonala principala: i>j
• Elementele de deasupra diagonalei principale: i < j
1 2 3 4 j
1
2
i
3
4
• Elementele de sub diagonala secundară: i + j > n +1
• Elementele de deasupra diagonalei secundare: i + j < n + 1
Eliminări
6 de linii și coloane
cin >> x; // numărul liniei pe care vrem s-o eliminăm

for (int i = x; i <= m-1; i++)


for (int j = 1; j <= n; j++)
matrice [ i ][ j ] = matrice[ i+1 ][ j ];

//fiecare linie e dusă mai sus ca să compenseze golul celei șterse

m=m-1; // numărul de linii a scăzut cu 1

Eliminarea unei linii


cin >> y; // numărul coloanei pe care vrem s-o eliminăm

for (int i = 1; i <= m; i++)


for (int j = y; j <= n-1; j++)
matrice [ i ][ j ] = matrice[ i ][ j +1 ];

//fiecare coloană e mutată spre stânga ca să compenseze


golul celei șterse

n=n-1; // numărul de coloane a scăzut cu 1

Eliminarea unei coloane


start
1 Scurtă recapitulare :
Structura repetitivă for 5 Matrici pătratice

Utilizarea matricilor :
2 În matematică și programare 6 Eliminări de linii și coloane

3 Declararea & inițializarea


matricilor victorie!
4 Parcurgerea unei matrici
Temă (opțională)
1. Construiți subprogramele corespunzătoare metodelor parcurse azi pentru o matrice
pătratică m[ 101 ][ 101 ].

2. Încercați adunarea matricilor (fără subprograme).

3. Încercați înmulțirea a două matrici pătratice (fără subprograme)

S-ar putea să vă placă și