Curs FR - Unitatea de Invatare 11

  • Upload
    marius

  • View
    233

  • Download
    1

Embed Size (px)

DESCRIPTION

pclp

Citation preview

Unitatea de nvare nr

Tablouri

1Programarea calculatoarelor i limbaje de programare Curs i aplicaii

Unitatea de nvare nr. 11

TABLOURI

CuprinsPagina

Obiectivele unitii de nvare nr. 11211.1Tablouri bidimensionale (matrici)211.2Operaii cu matrici211.3.Exemple de probleme cu matrici4Test de autoevaluare8Lucrare de verificare unitatea de nvare nr. 118Rspunsuri i comentarii la ntrebrile din testele de autoevaluare9Recapitulare 10Bibliografie unitatea de nvare nr. 1110

OBIECTIVELE unitii de nvare nr. 11

Principalele obiective ale Unitii de nvare nr. 11 sunt:

nelegerea organizrii datelor n matriciFamiliarizarea cu tablourile bidimensionaleModelarea datelor de prelucrat pe principiul utilizrii tablourilor bidimensionaleImplementarea cu succes a problemelor care utilizeaz matrici

11.1. TABLOURI BIDIMENSIONALE (matrici)

Din punct de vedere conceptual, elementele unui tablou bidimensional sunt plasate n spaiu pe dou direcii. Matricea reprezint o aplicaie natural a tablourilor bidimensionale.n matematic: qqq. . .q qqq. . . q Q= . . . . . . . . . . . . . . . . . . . . . . . . . .Q qqq. . .q

n limbajele C/C++ (indicii de linie i de coloan pot s porneasc de la 0):qqq. . . qQ= qqq. . . qQ. . . . . . . . . . . . . . . . . . . . . . . . . . . .qqq. . .q

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:qqqqqq. . .Dac notm cu k poziia n memorie a unui element, valoarea lui k = i m + j (unde m este numrul 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 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]=3mat[1][0]=32, mat[1][1]=20, mat[1][2]=1mat[2][0]=-1, mat[2][1]=1, mat[2][2]=-2mat[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]=1Elementele 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}}};

11.2. OPERAII CU MATRICI

S se citeasc de la tastatur elementele unei matrici de maxim 10 linii i 10 coloane. S se afieze matricea citit.

#include void main(void){int a[10][10]; int lin, col; coutlin;coutcol;int i, j;//citirea elementelor unei matricifor (i=0; i