c++矩阵加法运算符的重载
#include<iostream.h>#include<stdlib.h>/*设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运...
#include <iostream.h>
#include <stdlib.h>/*设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运算符。
提示: (1) 本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值的行列数变为右值的行列数)情况,其他情况输出“ program terminated! ”
(2) 要求分别输入矩阵 am 和 bm 的行列数,各矩阵元素,分别计算 cm=am+bm;am=bm; 并进行输出
(3) 定义相应的构造函数和析构函数
(4) 类中的成员变量应当有三个:int row,col;分别表示矩阵的行数和列数,另外还需要定义一个一级指针或二级指针用来申请动态空间,存放row*col个整数
(5) 程序最前面的文件包含请用下面代码*/
#include<string.h>
class Matrix
{
public:
int row;
int col;
int *p;
Matrix()//重要
{
row=0;
col=0;
p=NULL;
}
Matrix(int r,int c)
{
row=r;
col=c;
p=new int [row*col];
}
~Matrix()
{
delete []p;
}
friend Matrix operator+(const Matrix &a1,const Matrix &a2);//重载调用运算符+
Matrix& operator =(const Matrix &p);//重载=
void disp();
void input();
};
void Matrix::input()
{
cout<<"请输入该矩阵元素:"<<endl;
for(int i=0;i<row*col;i++)//初始化矩阵
cin>>p[i];
}
void Matrix::disp()
{
for(int i=0;i<row;i++)
{
cout<<'\t';
for(int j=0;j<col;j++)
cout<<*(p+i*col+j)<<'\t';
cout<<endl;
}
}
Matrix operator+(const Matrix &a1, const Matrix &a2)
{
int r=a1.row,c=a1.col;
Matrix c1(r,c);
for(int i=0;i<r* c;i++)
{ c1.p[i]=a1.p[i]+a2.p[i];}
return c1;
}
Matrix& Matrix::operator =(const Matrix &m)
{
int ro=m.row;
int co=m.col;
delete []p;
p=new int [ro * co];
for(int i=0;i<ro*co;i++)
{ p[i]=m.p[i];
} return *this;
}
int main()
{
int row_a,col_a,row_b,col_b;
cout<<"请输入am矩阵的行数和列数:"<<endl;
cin>>row_a>>col_a;
Matrix am(row_a,col_a);
am.input();
cout<<"请输入bm矩阵的行数和列数:"<<endl;
cin>>row_b>>col_b;
Matrix bm(row_b,col_b),cm;
bm.input();
cout<<"am:"<<endl;
am.disp();
cout<<"bm:"<<endl;
bm.disp();
if(row_a==row_b && col_a==col_b)
{
cm=am+bm;
cout<<"cm=am+bm:"<<endl;
cm.disp();
am=bm;
cout<<"am=bm:"<<endl;
am.disp();
}
else cout<<" program terminated! "<<endl;
return 0;
}
看了很久不知道为啥运行不出来 头秃
求大神赐教 展开
#include <stdlib.h>/*设计一个矩阵类,要求矩阵类中重载运算符加(+)和赋值(=),主函数定义类对象并调用重载的运算符。
提示: (1) 本题考虑可加(即加与被加矩阵的行列数必须分别相等)和可赋值(等号左值的行列数变为右值的行列数)情况,其他情况输出“ program terminated! ”
(2) 要求分别输入矩阵 am 和 bm 的行列数,各矩阵元素,分别计算 cm=am+bm;am=bm; 并进行输出
(3) 定义相应的构造函数和析构函数
(4) 类中的成员变量应当有三个:int row,col;分别表示矩阵的行数和列数,另外还需要定义一个一级指针或二级指针用来申请动态空间,存放row*col个整数
(5) 程序最前面的文件包含请用下面代码*/
#include<string.h>
class Matrix
{
public:
int row;
int col;
int *p;
Matrix()//重要
{
row=0;
col=0;
p=NULL;
}
Matrix(int r,int c)
{
row=r;
col=c;
p=new int [row*col];
}
~Matrix()
{
delete []p;
}
friend Matrix operator+(const Matrix &a1,const Matrix &a2);//重载调用运算符+
Matrix& operator =(const Matrix &p);//重载=
void disp();
void input();
};
void Matrix::input()
{
cout<<"请输入该矩阵元素:"<<endl;
for(int i=0;i<row*col;i++)//初始化矩阵
cin>>p[i];
}
void Matrix::disp()
{
for(int i=0;i<row;i++)
{
cout<<'\t';
for(int j=0;j<col;j++)
cout<<*(p+i*col+j)<<'\t';
cout<<endl;
}
}
Matrix operator+(const Matrix &a1, const Matrix &a2)
{
int r=a1.row,c=a1.col;
Matrix c1(r,c);
for(int i=0;i<r* c;i++)
{ c1.p[i]=a1.p[i]+a2.p[i];}
return c1;
}
Matrix& Matrix::operator =(const Matrix &m)
{
int ro=m.row;
int co=m.col;
delete []p;
p=new int [ro * co];
for(int i=0;i<ro*co;i++)
{ p[i]=m.p[i];
} return *this;
}
int main()
{
int row_a,col_a,row_b,col_b;
cout<<"请输入am矩阵的行数和列数:"<<endl;
cin>>row_a>>col_a;
Matrix am(row_a,col_a);
am.input();
cout<<"请输入bm矩阵的行数和列数:"<<endl;
cin>>row_b>>col_b;
Matrix bm(row_b,col_b),cm;
bm.input();
cout<<"am:"<<endl;
am.disp();
cout<<"bm:"<<endl;
bm.disp();
if(row_a==row_b && col_a==col_b)
{
cm=am+bm;
cout<<"cm=am+bm:"<<endl;
cm.disp();
am=bm;
cout<<"am=bm:"<<endl;
am.disp();
}
else cout<<" program terminated! "<<endl;
return 0;
}
看了很久不知道为啥运行不出来 头秃
求大神赐教 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询