Você está na página 1de 13

Colegiul National Mihail Kogalniceanu

Galati 2015

LUCRARE PENTRU SUSTINEREA EXAMENULUI DE


ATESTARE PROFESIONALA IN INFORMATICA

Tablouri bidimensionale.
Matrici ptratice

Elev: Fotin Dana-Florina


Clasa: a XII-a E

Profesor coordonator:
Violeta Neagu

Cuprins:

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

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. 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. 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.

2.1. Definirea tablourilor bidimensionale


Numim tablou o colecie (grup, mulime ordonat) de date, de acelai 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 poziia elementului n cadrul tabloului.
n funcie de numrul indicilor utilizai pentru a referi elementele tabloului, putem ntlni tablouri
unidimensionale (vectorii) sau multidimensionale (matricile sunt tablouri bidimensionale).
Din punct de vedere conceptual, elementele unui tablou bidimensional sunt plasate n spaiu pe dou
direcii. Matricea reprezint o aplicaie 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 cror 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

2. 2. Reprezentarea in memoria interna. Reprezentare


matematica.
n matematic:
q 11 q 12
q 21 q 22
Q=
.........
q m1 q m2

q 13
q 23
.....
q m3

.
.
..
.

.
.
.
.

.
q 1n
.
q 2n
.........
.
q mn

Q m n

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 m1, 0
q m1,1
q m1, 2
...
q m1,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 notm cu k poziia n memorie a unui element, valoarea lui k = i
maxim de linii, i este indicele de linie, j este indicele de coloan).

m + j (unde m este numrul

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 dorete iniializarea elementelor
unei matrici n momentul declarrii acesteia, se poate proceda
astfel:

int mat[4][3] = {
{10, -50, 3},
{32, 20, 1},
{-1, 1, -2},
{7, -8, 19} };
Prin aceast construcie, elementele matricii mat se iniializeaz n modul urmtor:
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 iniializarea elementelor sale, se poate omite numrul maxim de linii, n
schimb, datorit modului de memorare, trebuie specificat numrul maxim de coloane:

int mat[][3] = {
{10, -5, 3},
{32, 20, 1},

{-1, 1, -2},
{7, -8, 9} };
Construcia are acelai efect ca precedenta.

int mat[][3] = {
{1, 1},
{ -1},
{3, 2, 1}};

mat reprezint o matrice 3 3, ale crei elemente se iniializeaz 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 iniiale nedefinite dac tabloul este automatic.
Construciile utilizate la iniializarea 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}}

2. 3. Prelucrarea componentelor. Parcurgerea


tablorilor bidimensionale
Citirea tablourilor bidimensionale
Citirea elementelor unui tablou nu este posibil dect prin citirea fiecrui element. De aceea, la
fel ca i n cazul vectorilor operaia de citire a matricilor impune folosirea a dou secvene
ciclice suprapuse. Acestea corespund indicelor liniei (i), respectiv coloanei (j).
Afiarea tablourilor bidimensionale
Operaia de afiare a matricilor impune folosirea a dou secvene 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++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}

Citirea matricei

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

Afisarea matricei

return 0;
}

2.4. Matrici patratice

Definire
Este un caz particular de matrice pentru care numrul de linii este egal cu numrul 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 relaia i=j numrul liniei este
egal cu numrul coloanei pe care se afl.

Diagonala secundara
Diagonala secundar conine elementele a1,n, a2,n-1, a3,n-2, ..., an,1 caracterizate de relaia i+j=n+1.

a1

a2

a1

a1

a2

a2

a2

a2

a3

a3

a3

a3

a4

a4

a4

a4

..

..

..

..

an

an

an

an

.
.

Diagonala secundara

a1
n

.
.

a2
n

.
.

a3
Diagonala principala

.
.

a4
n

..

.
1

. an
.
n
Zonele delimitate de
diagonale

N
E

V
S

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

Você também pode gostar