定义一个矩阵类(采用顺序存储),类中除了定义二维数组(最大50*50)用于存放矩阵元素,同时存放矩阵的行列值。
为该类重载矩阵的加法运算和乘法运算,以及初始化函数和show函数,可根据需要定义其他函数。
在主函数中应用该类实现两个矩阵的数据值输入,检查矩阵的行列相等时,调用加法运算,并显示输出结果。
下面是我的代码 为什么运行错误 求大神讲解!!!!
#include
using namespace std;
class Matrix{
private:
int mar[50][50];
int row,col;
public:
Matrix();
void Input(int r,int c);
void show();
Matrix operator+(Matrix &);
Matrix operator*(Matrix &);
};
Matrix::Matrix()
{
int r,c;
row=r;col=c;
cin>>r>>c;
for(int i=0;i<row;i++)
for( int j=0;j<col;j++)
mar[i][j]=0;
}
void Matrix::Input(int r,int c)
{ row=r;col=c;
cin>>r>>c;
for(int i=0;i<row;i++)
for( int j=0;j<col;j++)
cin>>mar[i][j];
}
void Matrix::show()
{
cout<<"The sum of two matrices is:"<<endl;
for(int i=0;i<row;i++)
for( int j=0;j<col;j++)
{
cout<<mar[i][j]<<" ";
cout<<endl;
}
}
Matrix Matrix::operator+(Matrix &m)
{ int r,c;
row=r;col=c;
Matrix temp;
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
temp.mar[i][j]=mar[i][j]+m.mar[i][j];
return temp;
}
Matrix Matrix:: operator*(Matrix &m)
{ int r,c;
row=r;col=c;
Matrix stemp;
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
stemp.mar[i][j]=mar[i][j]*m.mar[i][j];
return stemp;
}
int main()
{ int r1,c1,r2,c2;
Matrix a,b,c;
a.Input(r1,c1);
b.Input(r2,c2);
if(r1==r2&&c1==c2)
{
c=a+b;
c.show();
}
else
cout<<"Fail to add"<<endl;
return 0;
}