Sunteți pe pagina 1din 3

Excelen n programare

1
Grupa Avansai

Runda 2: Tablouri bidimensionale n seciunile anterioare ai ntlnit noiunea de tablou unidimensional i ai rezolvat probleme ce prelucreaz date memorate cu ajutorul acestora. Ce este o matrice? La matematic vei nva n anii de liceu mai multe despre acest capitol. Acum, imaginai-v o tabl de ah, un tabel n Excel, sau pur i simplu un dreptunghi mprit n seciuni prin trasarea de linii orizontale i verticale. Un tablou bidimensional reprezint o structur de date, poziia fiecreia fiind stabilit cu ajutorul a doi indici, pentru linie, respectiv coloan. Elementele unei matrici sunt memorate ntr-o zon continu de memorie, unul dup altul, n ordinea parcurgerii liniilor (ca i cum ai citi matricea precum un text cu mai multe propoziii). Componentele unei astfel de structuri au acelai tip de date, spunem c structura este omogen. La ce ne folosete? Sunt foarte multe probleme ce pot fi rezolvate cu ajutorul matricilor, ca form de memorare a datelor. Exemple: o grdin ptrat n care se afl copaci. Putem s numrm ci dintre ei fac mere o furnic se deplaseaz n interiorul unui dreptunghi precum un oarece ntrun labirint, ncercnd s gseasc ieirea mai muli iepurai au plecat n cutarea oulor pentru Pati. Le adun fiecare n cte un co, la sfrit primind un premiu dac au fost harnici i istei

Iat cum ar putea arta un tablou, numit el X, cu 6 linii i 8 coloane, n care se gsesc cteva valori nenule:
X
[ 0 [ 0 ] 2 ] ] ] ] ] 3 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 6 7 ] [ 6 ] [ 7 ]

23 se gsete pe linia 0, coloana 0. 67 se gsete pe linia 0, coloana 5.

[ 1 [ 2 [ 3 [ 4 [ 5

i acum s trecem la treab! Cum se declar?

Declararea matricilor
Exemplu: int x[10][20]; //un tablou cu maxim 10 linii i 20 de coloane. Nu este obligatorie ocuparea n ntregime a acestei matrice ! Elementele vor fi de tip int. O matrice se declar prin precizarea tipului, numelui i numrului maxim de linii i coloane.

Excelen n programare

2
Grupa Avansai

Elementele pot fi accesate direct, prin precizarea liniei i coloanei (x[lin][col]). Dac numrul de linii este acelai cu numrul de coloane, matricea este ptratic. O matrice ptratic are dou diagonale: principal i secundar. Condiia ca un element s fie pe diagonala principal este ca indicele liniei s fie egal cu indicele coloanei. n figura de mai jos este reprezentat un tablou cu 4 linii i patru coloane, numit el A. n fiecare dintre csue este precizat indicele de linie i de coloan pentru fiecare element. Observai c se poate memora matricea ncepnd cu valoarea 1 pentru indicile de linie i de coloan. (Elementul A32 este elementul de pe linia 3, coloana 2). A11 A12 A13 A14 A21 A22 A23 A24 A31 A32 A33 A34 A41 A42 A43 A44 Elementele diagonalei principale sunt scrise cu rou. Pentru diagonala secundar am folosit culoarea albastr. Cum citim o matrice?

Citirea matricei
Citirea elementelor unui tablou se poate face de la tastatur sau dintr-un fiier text. De asemenea, o matrice poate fi construit pe baza anumitor proprieti pe care le au elementele acesteia. Citirea de la tastatur a unei matrici cu m linii i n coloane:
cout<<m=; cin>>m; cout<<n=; cin>>n; for(i=1; i<=m; i++) for(j=1; j<=n; j++) cin>>mat[i][j];

Afiarea matricei
for(i=1; j<=m; i++) {for(j=1; j<=n; j++) cout<<mat[i][j]<< ; cout<<endl; }

Probleme
1. Determinai cel mai mare element dintr-o matrice a cu m linii i n coloane ce conine numere naturale.
#include<iostream.h> int main()

Excelen n programare

3
Grupa Avansai

{ int a[100][100],m,n,max=-5000; cin>>m>>n; for(int i=1;i<=,;i++) for(int j=1;j<=n;j++) { cin>>a[i][j]; if(a[i][j]>max) max=a[i][j]; } cout<<max;

2. Se consider o matrice ptratic a cu n linii i n coloane. Afiai elementele aflate deasupra diagonalei principale, respectiv sub aceasta.
#include<iostream.h> void main() { int a[100][100],n,j,i; cin>>n; for(i=1;i<=n;i++) for(j=1;j<=n;j++) cin>>a[i][j]; cout<<Elementele aflate deasupra diagonalei principale: for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) cout<<a[i][j]<< ; cout<<endl; cout<<Elementele aflate sub diagonala principal: for(i=2;i<=n;i++) for(j=1;j<i;j++) cout<<a[i][j]<< ; }

ncercai s rezolvai cu profesorii votri!


Se d o matrice A cu n linii i n coloane, cu elemente numere ntregi. S se realizeze un program care afieaz: - elementele pare din matrice - elementele prime aflate pe diagonala secundar - suma elementelor palindrom de pe liniile impare - elementele aflate pe linii pare i coloane impare

Profesor Daniela MARCU Colegiul Naional tefan cel Mare Suceava

Evaluare