#include<iostream>;
using namespace std;
int x,y;
class matrix
{
double** mat;
int r,c,who;
public:
matrix(int a,int b);
~matrix();
void set();
void print();
matrix(const matrix &ob);
matrix operator+(matrix op2);
matrix operator=(matrix op2);
matrix operator-(matrix op2);
};
matrix::matrix(int a,int b)
{
r=a;
c=b;
mat=new double*[r];
for(int i=0;i<r;i++)
mat[i]=new double [c];
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
mat[i][j]=0;
}
//non sono sicuro che questo costruttore di copia sia scritto nel modo corretto!!
//non so se in questo contesto possa servire, anche se ho fatto delle allocazioni dinamiche!
matrix::matrix(const matrix &ob)
{
mat=new double*[r];
*mat=*ob.mat;
for(int i=0;i<r;i++){
mat[i]=new double [c];
*mat[i]=*ob.mat[i];
}
cout << "E stato chiamato il costr di copia.\n";
}
matrix::~matrix()
{
for(int i=0;i<r;i++)
delete [] mat[i];
delete [] mat;
}
void matrix::set()
{
for(int i=0;i<r;i++){
cout<<"inserire la riga "<<i+1<<":\n";
for(int j=0;j<c;j++)
cin>>mat[i][j];
}
}
void matrix:
rint()
{
cout<<"La matrice e:\n";
for(int i=0;i<r;i++){
for(int j=0;j<c;j++)
cout<<"\t"<<mat[i][j];
cout<<"\n";
}
}
matrix matrix:
perator+(matrix op2)
{
matrix temp(x,y);
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
temp.mat[i][j]=mat[i][j]+op2.mat[i][j];
return temp;
}
matrix matrix:
perator=(matrix op2)
{
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
mat[i][j]=op2.mat[i][j];
return *this;
}
matrix matrix:
perator-(matrix op2)
{
matrix temp(x,y);
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
temp.mat[i][j]=mat[i][j]-op2.mat[i][j];
return temp;
}
int main()
{
int z;
cout<<"inserire la dim.riga della matrice:\n";
cin>>x;
cout<<"inserire la dim.colonna della prima matrice:\n";
cin>>y;
matrix a(x,y),b(x,y),c(x,y);
a.set();
b.set();
a.print();
b.print();
c=a+b;
c.print();
cin>>z;
return 0;
}