Sunteți pe pagina 1din 13

Colegiul National “Mihail Kogalniceanu “

Galati 2015

LUCRARE PENTRU SUSTINEREA EXAMENULUI DE


ATESTARE PROFESIONALA IN INFORMATICA

Tablouri bidimensionale.
Matrici pătratice

Elev: Fotin Dana-Florina Profesor coordonator:


Clasa: a XII-a E Violeta Neagu

0
Cuprins:

1. Tema proiectului
2. Consideratii teoretice
3. Probleme tip
4. Concluzie
5. Bibliografie

1
1. Tema proiectului

Sa se implementeze in limbajul C/C++ utilizand mediul de


programare CodeBlocks miniaplicatii ale tablourilor
bidimensionale, respectiv matrici patratice. Aplicatiile vor
evidentia notiunile teoretice studiate.

2
2. Consideratii teoretice

2.1. Definirea tablourilor bidimensionale. Declarare.


Exemple.
2. 2. Reprezentarea in memoria interna. Reprezentare
matematica.
2. 3. Prelucrarea componentelor. Parcurgerea
tablorilor bidimensionale
2.4. Matrici patratice
 definire
 diagonala principala
 diagonala secundara
 zonele delimitate de diagonale

3
3. Probleme tip

3.1. Parcurgerea (citire/ afisare eventual din fisier)


3.2 Parcurgerea cu prelucrarea componentelor (ex.:
suma, maxim etc.)
3.3. Preclucrarea diagonalelor
a) diagonala principala
b) diagonala secundara
3.4. Zone delimitate de diagonale
a) deasupra diagonalei principale
b) sub diagonala principala
c) deasupra diagonalei secundare
d) sub diagonala secundara
e) cele 4 zone
3.5. Probleme de generare
3.6 Matrice simetrica fata de diagonala principala
3.6 Matrice simetrica fata de diagonala secundara

Enunt + rezolvari….

4
2.1. Definirea tablourilor bidimensionale

Numim tablou o colecţie (grup, mulţime ordonată) de date, de acelaşi tip, situate într-o zonă de
memorie continuă (elementele tabloului se află la adrese succesive). Tablourile sunt variabile compuse
(structurate), deoarece grupează mai multe elemente. Variabilele tablou au nume, iar tipul tabloului
este dat de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului şi indicii
(numere întregi) care reprezintă poziţia elementului în cadrul tabloului.
În funcţie de numărul indicilor utilizaţi pentru a referi elementele tabloului, putem întâlni tablouri
unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).
Din punct de vedere conceptual, elementele unui tablou bidimensional sunt plasate în spaţiu pe două
direcţii. Matricea reprezintă o aplicaţie naturală a tablourilor bidimensionale.

Declararea:

Ca şi variabilele simple, variabilele tablou trebuie declarate înainte de utilizare.


Modul de declarare:
tip nume_tablou[dim_1][dim_2]…[dim_n];
unde:tip reprezintă tipul elementelor tabloului; dim_1,dim_2,...,dim_n sunt numere întregi
sau expresii constante întregi (a căror valoare este evaluată la compilare) care reprezintă limitele
superioare ale indicilor tabloului.
Exemplu:
int matrice[2][3]; // declararea tabloului matrice (bidimensional),
// maximum 2 linii şi maximum 3 coloane, tip int

5
2. 2. Reprezentarea in memoria interna. Reprezentare
matematica.

În matematică:
q 11 q 12 q 13 . . . q 1n
q 21 q 22 q 23 . . . q 2n
Q= ......... ..... .. . ......... Q m n
q m1 q m2 q m3 . . . q mn

În limbajele C/C++ (indicii de linie şi de coloană pornesc de la 0):


q 00 q 01 q 02 ... q 0 ,n 1
q 10 q 11 q 12 ... q 1,n 1 Q m n
Q= . . . . . . . . . . . . . . . . . . . . . . . . . . . .
q m1, 0 q m1,1 q m1, 2 ... q m1,n 1

Exemplu:
double q[3][2]; // declararea matricii q, cu maxim3 linii şi 2 coloane, tip
double

În memorie, elementele unei matrici sunt memorate pe linii:


q 00 q 01 q 10 q 11 q 20 q 21 . . .
Dacă notăm cu k poziţia în memorie a unui element, valoarea lui k = i  m + j (unde m este numărul
maxim de linii, i este indicele de linie, j este indicele de coloană).

q[0][0] q[0][1] q[0][2] . . . . . . q[0][n-1] q[1][0] . . . . . .q[m-1][0] . . . q[m-1][n-1]


.
Dacă se doreşte iniţializarea elementelor unei matrici în momentul declarării acesteia, se poate proceda
astfel:
int mat[4][3] = {
{10, -50, 3},
{32, 20, 1},
{-1, 1, -2},
{7, -8, 19} };
Prin această construcţie, elementele matricii mat se iniţializează în modul următor:
mat[0][0]=10, mat[0][1]=-50, mat[0][2]=3
mat[1][0]=32, mat[1][1]=20, mat[1][2]=1
mat[2][0]=-1, mat[2][1]=1, mat[2][2]=-2
mat[3][0]=7, mat[3][1]=-8, mat[3][2]=19

La declararea unei matrici şi iniţializarea elementelor sale, se poate omite numărul maxim de linii, în
schimb, datorită modului de memorare, trebuie specificat numărul maxim de coloane:
int mat[][3] = {
{10, -5, 3},
{32, 20, 1},

6
{-1, 1, -2},
{7, -8, 9} };
Construcţia are acelaşi efect ca precedenta.
int mat[][3] = {
{1, 1},
{ -1},
{3, 2, 1}};
mat reprezintă o matrice 3  3, ale cărei elemente se iniţializează astfel:
mat[0][0]=1, mat[0][1]=1, mat[1][0]=-1, mat[2][0]=3, mat[2][1]=2, mat[2][2]=1
Elementele mat[0][2], mat[1][1], mat[1][2] nu sunt initalizate. Ele au valoarea zero dacă tabloul este
global şi valori iniţiale nedefinite dacă tabloul este automatic.

Construcţiile utilizate la iniţializarea tablourilor bidimensionale se extind pentru tablouri


multidimensionale, cu mai mult de doi indici.
Exemplu:
int a[2][2][3]={
{ {10, 20}, {1, -1}, {3, 4}},
{ {20, 30}, {50, -40}, {11, 12}}

7
2. 3. Prelucrarea componentelor. Parcurgerea
tablorilor bidimensionale
Citirea tablourilor bidimensionale

Citirea elementelor unui tablou nu este posibilă decât prin citirea fiecărui element. De aceea, la
fel ca şi în cazul vectorilor operaţia de citire a matricilor impune folosirea a două secvenţe
ciclice suprapuse. Acestea corespund indicelor liniei (i), respectiv coloanei (j).

Afișarea tablourilor bidimensionale

Operaţia de afișare a matricilor impune folosirea a două secvenţe ciclice suprapuse. Acestea
corespund indicelor liniei (i), respectiv coloanei (j).

Algoritm :
#include <iostream>

using namespace std;

int main()
{
int n,m,i,j,a[20][20];
cout<<"m=";cin>>m;
cout<<"n=";cin>>n;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++) Citirea matricei
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}

for(i=1;i<=m;i++)
{ for(j=1;j<=n;j++)
cout<<a[i][j]<<" "; Afisarea matricei
cout<<endl;
}

return 0;
}

8
2.4. Matrici patratice

 Definire
Este un caz particular de matrice pentru care numărul de linii este egal cu numărul de coloane.
Exemplu:
int matrice[3][3]; // declararea tabloului matrice (bidimensional),
// maximum 3 linii şi maximum 3 coloane, tip int

 Diagonala principala
Diagonala principală este formată din elementele care îndeplinesc relația i=j numărul liniei este
egal cu numărul coloanei pe care se află.
 Diagonala secundara
Diagonala secundară conţine elementele a1,n, a2,n-1, a3,n-2, ..., an,1 caracterizate de relaţia i+j=n+1.

Diagonala secundara
a1 a2 a1 a1 . a1
1 2 3 4 . n
a2 a2 a2 a2 . a2
1 2 3 4 . n
a3 a3 a3 a3 . a3
1 2 3 4 . n Diagonala principala
a4 a4 a4 a4 . a4
1 2 3 4 . n
.. .. .. .. . ..
.
an an an an. an
1
 2 3 .
Zonele delimitate de
4 n
diagonale

V E

9
10
4. Concluzie

Avantaje, dezavantaje, limitari, posibilitati de utilizare,


implementare, enumerarea unor algoritmi care utilizeaza
notiunile prezentate. Exemple de programe/ aplicatii practice,
reale care ar putea utiliza notiunile prezentate etc

11
2. Bibliografie

 Manuale sau resurse online folosite etc.

 ,,Initiere in Programarea Vizuala’’ ( Varianta Borland C++ Builder)


; Tudor Sorin ; Editura L&S ;
 ,,Programare in C++ Builder’’ ; Mihai Olteanu si Crina Grojan ;
Editura Albastra
 www.infoscience.3x.ro
 www.referate.ro
 www.google.ro

12

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