面向对象程序设计上机练习十一(运算符重载)
Time Limit: 1000MS Memory limit: 65536K
题目描述
有两个矩阵a和b,均为2行3列,求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b。
输入
第1、2行是矩阵a的值,数据以空格分开。
第3、4行是矩阵b的值,数据以空格分开。
第3、4行是矩阵b的值,数据以空格分开。
输出
2个矩阵a、b之和,以行列形式显示。
示例输入
2 3 4 3 5 3 4 3 1 5 4 3
示例输出
6 6 5 8 9 6
来源
zlh
#include <iostream>
using namespace std;
class block
{
private: int a[2][3];
int i,j;
public:
block()
{
for(i=0;i<2;i++)
for(j=0;j<3;j++)
a[i][j]=0;
}
block operator+(block &a1);
friend istream &operator>>(istream &in,block &a2);
friend ostream &operator<<(ostream &out,block &a3);
};
block block::operator+(block &a1)
{
block c;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
c.a[i][j]=a1.a[i][j]+a[i][j];
return c;
}
istream &operator>>(istream &in,block &a2)
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
in>>a2.a[i][j];
return in;
}
ostream &operator<<(ostream &out,block &a3)
{
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
if(j!=2)
out<<a3.a[i][j]<<" ";
else out<<a3.a[i][j]<<endl;
}
}
return out;
}
int main()
{
block a,b,c;
cin>>a;
cin>>b;
c=a+b;
cout<<c;
return 0;
}