Documente Academic
Documente Profesional
Documente Cultură
Tablouri ptratice
Definiie general:
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).
Exemplu de tablou ptratic n care indexarea a fost facut de la 0:
Matricea ptratic este un caz particular de matrice pentru care numrul de linii este
egal cu numrul de coloane.
Diagonala principal are proprietatea de avea indicii de linie i coloana egali. (pentru elementrul
ai,j, i=j)
Diagonala secundar conine elementele a1n, a2 n-1 , a3 n-2,...,an1 cu proprietatea c suma
indicilor este egal cu numrul de linii+1. (pentru elementrul ai,j, i+j=n+1)
if (i>j)
*<prelucreaz a[i,j] deasupra diag. princ.>
else
Declararea tabourilor
Ca i variabilele simple, variabilele tablou bidimensionale trebuie declarate nainte de utilizare.
Modul de declarare:
tip nume_tablou[numr linii][numr coloane];numa
unde:tip reprezint tipul elementelor tabloului; numr_linii, numr_coloane sunt numere ntregi sau
expresii constante ntregi (a cror valoare este evaluat la compilare) care reprezint limitele
superioare ale indicilor tabloului.
Exemple:
double matrice[2][3]; // declararea tabloului matrice (bidimensional),
// maximum 2 linii i maximum 3 coloane, elemente tip double
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:
...
q 1nq 11
q 12
q 13
q 21
q 22
q 23
Q=
...
q 2n
..........................
q m1
q m2
q m3
...
Q mn
q mn
q 01
q 11
q 02
q 12
...
...
q 0,n 1
q 1,n
Q mn
............................
q
q m1,2 . . .
q m1,n 1
q m1,0 m1,1
Exemplu:
double q[3][2];
double
cin>>A[i][j];
}
//urmeaz afiarea elementelor matricii
for (i=0; i<nr; i++) {
for (j=0; j<nr; j++)
cout<<A[i][j]<<' ';
cout<<'\n';
Probleme propuse
1. S se scrie programul care citete de la tastatur o matrice cu n linii i n coloane (cel mult 20
linii i 20 coloane) i s se calculeze suma elementelor pozitive din matricea astfel citit.
Programul surs:
#include<iostream>
using namespace std;
int main()
{
int a[20][20],i,j,n,s=0;
cout<<"n=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(a[i][j]>0)
s=s+a[i][j];
cout<<"s="<<s<<endl;
return 0;
}
Se va afia suma elementelor pozitive puse n matrice, adic, pentru datele introduce,
3+13+19+10+12=57.
3. Se cere s se citeasc o matrice ptratic de cel mult 20x20 elemente i s se verifice daca
este simtetric fat de prima diagonal. S se afieze matricea pe ecran n ordinea invers a
citirii elementelor i s se enune un mesaj corespunztor n cazul existenei sau neexistenei
simetriei.
Programul surs:
#include<iostream>
using namespace std;
int main()
{
int a[20][20],i,j,n,ok;
cout<<"Numarul de linii=";
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
cout<<"Matricea, in ordinea inversa a citirii elementelor, este:"<<endl;
for(j=n;j>=1;j--)
{
for(i=n;i>=1;i--)
cout<<a[i][j]<<' ';
cout<<endl;
}
ok=1; //presupunem ca matricea este simetrica si intrerupem cautarea cand se dovedeste
contrariul
for(i=1;i<=n &&ok ;i++)
for(j=1;j<=n;j++)
if(a[i][j]!=a[j][i])
ok=0;
if(ok)
cout<<"Matricea este simetrica fata de prima diagonala"<<endl;
else
cout<<"Matricea nu este simetrica fata de prima diagonala"<<endl;
return 0;
}
Cuprins
1. Definiie general...................................................................... 1
2. Proprieti ale zonelor speciale din matrici ptratice.............. 2
3. Modaliti de prelucrare a elementelor.................................... 3
4. Declararea tablourilor bidimensionale.................................... 4
5. Iniializarea elementelor unei matrici ptratice....................... 5
6. Citirea i afiarea unei matrici pe ecran.................................. 6
7. Probleme propuse..................................................................... 7
8. Cuprins..................................................................................... 15