Problem M: C++习题 矩阵求和--重载运算符
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 882 Solved: 328
[ Submit][ Status][ Web Board]
Description
有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
Input
两个2行3列矩阵
Output
矩阵之和
Sample Input
1 2 3
4 5 6
7 8 9
1 2 3
Sample Output
8 10 12
5 7 9
HINT
前置代码及类型定义已给定如下,提交时不需要包含,会自动添加到程序前部
/* C++代码 */
#include <iostream>
using namespace std;
class Matrix
{
public:
Matrix();
friend Matrix operator+(Matrix &,Matrix &);
friend ostream& operator<<(ostream&,Matrix&);
friend istream& operator>>(istream&,Matrix&);
private:
int mat[2][3];
};
主函数已给定如下,提交时不需要包含,会自动添加到程序尾部
/* C++代码 */
int main()
{
Matrix a,b,c;
cin>>a;
cin>>b;
c=a+b;
cout<<c<<endl;
return 0;
}
/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*作 者:单昕昕
*完成日期:2015年5月16日
*版 本 号:v1.0
*/
#include <iostream>
using namespace std;
class Matrix
{
public:
Matrix();
friend Matrix operator+(Matrix &,Matrix &);
friend ostream& operator<<(ostream&,Matrix&);
friend istream& operator>>(istream&,Matrix&);
private:
int mat[2][3];
};
Matrix::Matrix()
{
int i,j;
for(i=0; i<2; ++i)
for(j=0; j<2; ++j)
mat[i][j]=0;
}
Matrix operator+(Matrix &m,Matrix &n)
{
int i,j;
Matrix ma;
for(i=0; i<2; ++i)
for(j=0; j<3; ++j)
ma.mat[i][j]=m.mat[i][j]+n.mat[i][j];
return ma;
}
ostream& operator<<(ostream&output,Matrix & m)
{
int i,j;
for(i=0; i<2; ++i)
{
for(j=0; j<2; ++j)
output<<m.mat[i][j]<<" ";
output<<m.mat[i][2];
output<<endl;
}
return output;
}
istream& operator>>(istream&input,Matrix & m)
{
int i,j;
for(i=0; i<2; ++i)
for(j=0; j<3; ++j)
input>>m.mat[i][j];
return input;
}
int main()
{
Matrix a,b,c;
cin>>a;
cin>>b;
c=a+b;
cout<<c<<endl;
return 0;
}