衬心 2017-10-28 08:42
浏览 1672

定义一个矩阵类(采用顺序存储)

定义一个矩阵类(采用顺序存储),类中除了定义二维数组(最大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;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器