Conan
Moderator
 Inregistrat: acum 17 ani
Postari: 198
|
|
/*Definiti clasa matrice in care avem 2 constructori(constructor implicit, constructor cu parametru) si efectuarea de operatii cu matrici (suma a 2 matrici,produsul a 2 matrici,transpusa unei matrice)*/
#include<conio.h> #include<iostream.h> #define MAX 15
//definirea clasei class matrice {int mat[20][20],linii,coloane; public: matrice(); matrice(int,int); void citire(); void afisare(); void suma(matrice a,matrice b); void produs(matrice a,matrice b); void transpusa(); //vom folosi redefinirea operatorilor*/ //friend matrice operator+(matrice a, matrice b); friend matrice operator *(matrice a, matrice b); };
//definire constructor implicit matrice::matrice() { linii=0; coloane=0; }
//definire constructor cu parametru matrice::matrice(int lin,int col) {linii=lin; coloane=col; }
void matrice::citire() {int i,j; cout<<"\nNr de linii: "<<linii; cout<<"\nNr de coloane: "<<coloane; for(i=0;i<linii;i++) for(j=0;j<coloane;j++) {cout<<"a["<<i<<"]["<<j<<"]"<<"="; cin>>mat[i][j]; } }
void matrice::afisare() {int i,j; cout<<"Elementele matricei sunt:\n"; for(i=0;i<linii;i++) {for(j=0;j<coloane;j++) cout<<mat[i][j]<<" "; cout<<"\n"; } }
void matrice::suma(matrice a,matrice b) {int s,i,j; s=0; for(i=0;i<linii;i++) for(j=0;i<coloane;j++) {s=s+a.mat[i][j]+b.mat[i][j]; } cout<<"Suma elementelor celor 2 matrici este "<<s; } //e mai putin importanta suma elementelor a doua matrici, se cere mai degraba suma a doua matrici /* consideram ca matricile au acelasi nr de linii si acelasi nr de coloane matrice c; c.linii=a.linii; c.coloane=a.coloane; for(i=0;i<c.linii;i++) for(j=0;j<c.coloane;j++) c.mat[i][j]=a.mat[i][j]+b.mat[i][j]; c.afisare(); } */ void matrice::produs(matrice a,matrice b) {int p,j,i; //consideram ca matricile au acelasi nr de linii si acelasi nr de coloane p=1; for(i=0;i<a.linii;i++) for(j=0;i<a.coloane;j++) p=p*a.mat[i][j]*b.mat[i][j];
cout<<"Produsul elementelor celor 2 matrici este "<<p; //aceeasi observatie...importanta este matricea produs, nu produsul elementelor } //a[nXm],b[mXp],c[nXp] matrice operator*(matrice a, matrice b) {matrice c; int i,j,k; c.linii=a.linii; c.coloane=b.coloane; for(i=0;i<c.linii;i++) for(j=0;j<c.coloane;j++) { c.mat[i][j]=0; for(k=0;k<a.coloane;k++) c.mat[i][j]=c.mat[i][j]+a.mat[i][k]*b.mat[k][j]; } return c; }
void matrice::transpusa() {int i,j; matrice at; at.linii=coloane; at.coloane=linii; for(i=0;i<linii;i++) for(j=0;j<coloane;j++) at.mat[i][j]=mat[j][i]; at.afisare(); }
void main() { clrscr(); matrice s1(3,2),s2(2,3),s3; s1.citire(); s2.citire(); s3=s1*s2; s3.afisare(); s1.transpusa(); getch(); }
|
|