//编译成功,连接也成功,但执行时出现内存错误,不懂?
#include<iostream.h>
#include<stdlib.h>
//using namespace std;
class Matrix //矩阵类
{
private:
int rows,cols; //矩阵的行列
double *m; //矩阵存放的元素,按行存放
public:
Matrix(int N_rows=2,int M_cols=2);
~Matrix();
MatriX(const Matrix &ZM);
Matrix operator+(Matrix &AMD); //重载+
void input();//矩阵输入
void display();//矩阵输出
};
Matrix::Matrix(int N_rows,int M_cols)
{
rows=N_rows;
cols=M_cols;
m = new double [rows * cols];
}
Matrix::~Matrix()
{
delete []m;
}
Matrix::MatriX(const Matrix &ZM)
{
int r=0;
for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)
m[r++]=ZM.m[r++];
}
Matrix Matrix::operator+(Matrix &AMD)
{
int r=0;
if(rows==AMD.rows && cols==AMD.cols)
{
Matrix GM(rows,cols);
for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)
{
GM.m[r++]=m[r++]+AMD.m[r++];
}
return GM;
}
else
{
cout<<"距阵相加运算错误"<<endl;
exit(0);
}
}
void Matrix::input()
{
int r=0;
for(int Row=1;Row<=rows;Row++)
for(int Col=1;Col<=cols;Col++)
cin>>m[r++];
}
void Matrix::display()
{
int r=0;
for(int Row=1;Row<=rows;Row++)
{
for(int Col=1;Col<=cols;Col++)
cout<<m[r++]<<'\t';
cout<<endl;
}
}
int main()
{
Matrix a(2,2); //矩阵a 2行2列
Matrix b(2,2); //矩阵b 2行2列
Matrix c(2,2); //矩阵c 2行2列
cout<<"请输入你想要的2行2列的距阵:\t\n";
a.input();
cout<<"请输入你想要的2行2列的距阵:\t\n";
b.input();
cout<<endl;
c=a+b;
cout<<"下面是你想得到的相加后的2行2列的距阵:\t\n\n";
c.display();
return 0;
}