Sunteți pe pagina 1din 16

MATRICE

Tablouri Bidimensionale

O matrice poate arata astfel: 


        Matricile prezentate mai sus sunt MATRICI
PATRATICE (numarul de linii este egal cu numarul de coloane), iar in
C++ are anumite proprietati ajutatoare.
        Matricea se declara folosind comanda: tip [numar max. de linii]
[numar max. de coloane];. Exemplu: int x[10][5]. Am declarat o
matrice de tip int cu maxim 10 linii si 5 coloane. Ca si la vectori,
matricea declarata este …goala. Trebuie sa ii atribuim elemente
fiecarui spatiu liber. Atribuirea se face aproximativ ca la vectori,
doar ca aici vom avea doua repetitii, deoarece fiecarei linii ii
corespunde n-1 coloane, etc, si vom avea nevoie de o variabila i, ce
va reprezenta linia, si una j, ce va reprezenta coloana. Vom mai
folosi inca 2 variabile, n si m, care vor reprezenta numarul actual de
linii, respectiv coloane

        Iata o matrice careia i-am atribuit cateva numere in mod


aleator:
        Iata cum facem atribuirea in C++: for (i=0; i<n; i++)
for (j=0; j<m; j++) 
cin>>x[i][j];         In aceasta mica aplicatie, vom citi de la tastatura o matrice, si
o vom afisa pe ecran. Iata cum facem:

#include <iostream.h>
void main ()
{
int x[10][10], n, m, i, j;//m=matricea, n, m= nr actual de linii/coloane, i,
j=linia, respectiv coloana
cout<<”Dati numarul de linii: “; cin>>n;//citim nr de linii
cout<<”Dati numarul de coloane: “; cin>>m;  //citim nr. de coloane
cout<<”Introduceti elementele matricei: “<<endl;
for (i=0; i<n; i++)
                for (j=0; j<m; j++)
                                  {
                                cout<<”x["<<i<<"]["<<j<<"]=”;
                                cin>>x[i][j]; //citim elementele matricei
                                  }
cout<<”Afisam matricea: “<<endl;
for (i=0; i<n; i++)
                      for (j=0; j<m; j++)
                    {cout<<x[i][j]<<” “;   //si afisam fiecare linie, respectiv coloana, dar
cu un mic spatiu intre elemente
                     cout<<endl;  //dupa fiecare linie terminata, trebuie sa trecem la alt
rand
                    }
}

   Matrici in C++
1)Definitie:
O matrice este o forma de organizare tabelara a unor elemente care
au acelsi tip, componentele acesteia putand fi identificate printr-un
nume urmat (intre paranteze drepte) de pozitia acestora in cadrul
vectorului. Identificarea pozitiei in cadrul matricii se realizeaza prin
specificarea liniei si coloanei pe care se afla elementul matricii.

2)Declaratia unei matrici se realizeaza prin specificarea tipului


componentelor matricii, identificatorul matricii urmat apoi de
dimensiunea acesteia intre paranteze drepte (numarul de linii si de
coloane ale matricii):
     int M[5][6];         - declara o matrice de 5 de linii si 6 coloane
continand numere intregi
     float F[10][15];   - declara o matrice de 10 linii si 15 coloane
continand numere reale
     char C[20][50];  - declara o matrice de 20 de linii si 50 de coloane
continand caractere alfanumerice.
Observatie: Liniile si coloanele matricii se numara incapand de la
valoarea 0. Astfel, prima line, respectiv prima coloana a matricii este
linia/coloana 0, a doua linie/coloana este 1, s.a.m.d.:

Un caz particular de matrice este matricea patratica, caz in care numarul de


linii este egal cu numarul de coloane:
int M[5][5];

3)Introducerea/afisarea componentelor unei matrici sunt de regula operatii


realizate cu ajutorul structurilor repetitive, in principal folosindu-se structura
FOR. Avand in vedere ca trebuie sa introducem/afisam niste valori aflate intr-o
matrice, avand deci 2 dimensiuni, vom folosi cate o structura repetitiva pentru
fiecare dimensiune: una reprezentand linia iar cealalta reprezentand coloana
pe care se afla elementul matricii:

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int i, j, m, n, M[10][10];
6    cout<<"Introduceti numarul de linii: m=";
7    cin>>m;
8    cout<<"Introduceti numarul de coloane: n=";
9    cin>>n;
10    cout<<"Introduceti numerele:"<<endl;
11    for (i=0;i<m;i++)
12      for (j=0;j<n;j++)
13       {
14       cout<<"M["<<i<<"]["<<j<<"]=";cin>>M[i][j];
15       }
16 }

Exemplu: Sa se calculeze suma elementelor unei matrici de m linii si n coloane


continand numere naturale oarecare. Numarul de linii, coloare, respectiv
elemntele componente ale matricii vor fi introduse de la tastatura.

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int i, j, m, n, M[10][10], suma;
6    cout<<"Introduceti numarul de linii: m=";
7    cin>>m;
8    cout<<"Introduceti numarul de coloane: n=";
9    cin>>n;
1    suma=0;
0    cout<<"Introduceti numerele:"<<endl;
1    for (i=0;i<m;i++)
1      for (j=0;j<n;j++)
1       {
2
1
3
1
4
1       cout<<"M["<<i<<"]["<<j<<"]=";cin>>M[i][j];
5       suma=suma+M[i][j];
1       }
6    cout<<"Suma elementelor matricii este: "<<suma<<endl;
1 }
7
1
8
1
9

Probleme:

1 Sa se calculeze media aritmetica a elementelor unei matrici su m linii si n


. coloane. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int n,m,i,j,a[20][20];
6    int nr,s=0;
7    cout<<"m=";cin>>m;
8    cout<<"n=";cin>>n;
9    for(i=1;i<=m;i++)
1       for(j=1;j<=n;j++)
0       {
1          cout<<"a["<<i<<"]["<<j<<"]=";
1          cin>>a[i][j];
1       }
2    cout<<"Matricea este:"<<endl;
1
3
1
4
1
5
1
6
1
7
1
   for(i=1;i<=m;i++)
8
   {
1
      for(j=1;j<=n;j++)
9
         cout<<a[i][j]<<" ";
2
      cout<<endl;
0
   }
2
   for(i=1;i<=m;i++)
1
      for(j=1;j<=n;j++)
2
         s=s+a[i][j];
2
   nr=m*n;
2
   cout<<"Matricea contine:"<<nr<<" elemente"<<endl;
3
   cout<<"Suma elementelor matricii este:"<<s<<endl;
2
   cout<<"Media aritmetica a acestora este: "<<(float)s/nr;
4
   return 0;
2
}
5
2
6
2
7
2
8
2
9
3
0
2 Sa se calculeze suma elementelor de pe diagonala principala a unei matrici
. patratice. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int n,i,j,a[20][20],s=0;
6    cout<<"n=";cin>>n;
7    for(i=1;i<=n;i++)
8       for(j=1;j<=n;j++)
9       {
1          cout<<"a["<<i<<"]["<<j<<"]=";
0          cin>>a[i][j];
1       }
1    cout<<"Matricea este:"<<endl;
1    for(i=1;i<=n;i++)
2    {
1       for(j=1;j<=n;j++)
3          cout<<a[i][j]<<" ";
1       cout<<endl;
4    }
1    for(i=1;i<=n;i++)
5       s=s+a[i][i];
1    cout<<"Suma elementelor de pe diagonala principala a matricii
6 este:"<<s<<endl;
1    return 0;
7 }
1
8
1
9
2
0
2
1
2
2
2
3
2
4

3 Sa se calculeze produsul elementelor de pe diagonala secunadara a unei


. matrici patratice. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int n,i,j,a[20][20],p=1;
6    cout<<"n=";cin>>n;
7    for(i=1;i<=n;i++)
8       for(j=1;j<=n;j++)
9       {
1          cout<<"a["<<i<<"]["<<j<<"]=";
0          cin>>a[i][j];
1       }
1    cout<<"Matricea este:"<<endl;
1    for(i=1;i<=n;i++)
2    {
1       for(j=1;j<=n;j++)
3          cout<<a[i][j]<<" ";
1       cout<<endl;
4    }
1    for(i=1;i<=n;i++)
5       p=p*a[i][n-i+1];
1    cout<<"Produsul elementelor de pe secundara a matricii
6 este:"<<p<<endl;
1    return 0;
7 }
1
8
1
9
2
0
2
1
2
2
2
3
2
4

4 Sa se calculeze suma elementelor de pe fiecare linie a unei matrici de


. dimensiune m x n. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int m,n,i,j,a[20][20],s;
6    cout<<"m=";cin>>m;
7    cout<<"n=";cin>>n;
8    for(i=1;i<=m;i++)
9       for(j=1;j<=n;j++)
1       {
0          cout<<"a["<<i<<"]["<<j<<"]=";
1          cin>>a[i][j];
1       }
1    cout<<"Matricea este:"<<endl;
2    for(i=1;i<=m;i++)
1    {
3       for(j=1;j<=n;j++)
1          cout<<a[i][j]<<" ";
4       cout<<endl;
1    }
5    for(i=1;i<=m;i++)
1    {
6
1
7
1
8
1
9
2
0
2
1       s=0;
2       for(j=1;j<=n;j++)
2          s=s+a[i][j];
2       cout<<"Suma elementelor de pe linia "<<i<<" este: "<<s<<endl;
3    }
2    return 0;
4 }
2
5
2
6
2
7
2
8
2
9

5. Sa se calculeze suma elementelor de pe fiecare coloana a unei matrici de


dimensiune m x n. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int m,n,i,j,a[20][20],s;
6    cout<<"m=";cin>>m;
7    cout<<"n=";cin>>n;
8    for(i=1;i<=m;i++)
9       for(j=1;j<=n;j++)
1       {
0          cout<<"a["<<i<<"]["<<j<<"]=";
1          cin>>a[i][j];
1       }
1    cout<<"Matricea este:"<<endl;
2    for(i=1;i<=m;i++)
1    {
3       for(j=1;j<=n;j++)
1          cout<<a[i][j]<<" ";
4       cout<<endl;
1    }
5    for(j=1;j<=n;j++)
1    {
6       s=0;
1       for(i=1;i<=m;i++)
7          s=s+a[i][j];
1       cout<<"Suma elementelor de pe coloana "<<j<<" este:
8 "<<s<<endl;
1    }
9    return 0;
2 }
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9

6. Sa se afiseze transpusa unei matrici. 

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5    int n,i,j,a[20][20],at[20][20];
6    cout<<"n=";cin>>n;
7    for(i=1;i<=n;i++)
8       for(j=1;j<=n;j++)
9       {
1          cout<<"a["<<i<<"]["<<j<<"]=";
0          cin>>a[i][j];
1       }
1    cout<<"Matricea este:"<<endl;
1    for(i=1;i<=n;i++)
2    {
1       for(j=1;j<=n;j++)
3          cout<<a[i][j]<<" ";
1       cout<<endl;
4    }
1    cout<<"Matricea transpusa este:"<<endl;
5    for(i=1;i<=n;i++)
1    {
6       for (j=1;j<=n;j++)
1       {
7             at[i][j]=a[j][i];
1             cout<<at[i][j]<<" ";
8       }
1
9
2
0
2
1
2
2
2
3
2
4       cout<<endl;
2    }
5    return 0;
2 }
6
2
7
2
8
2
9
3
0
3
1

6. Sa se citeasca si sa se afiseze data o matrice cu "m" linii si "n" coloane


#include<iostream.h>
void 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];}
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j];
cout<<endl;
}
}

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