YTUOJ——C++习题 矩阵求和--重载运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17497931/article/details/84321451

题目描述

有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。

输入

两个2行3列矩阵

输出

矩阵之和

样例输入

1 2 3
4 5 6

7 8 9
1 2 3

样例输出

8 10 12
5 7 9

答案

#include <iostream.h>
//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(){
	for ( int i = 0; i < 2; i++ )
		for ( int j = 0; j < 3; j++ )
			mat[i][j] = 0;
}
Matrix operator+( Matrix &a, Matrix &b ){
	Matrix c;
	for ( int i = 0; i < 2; i++ )
		for ( int j = 0; j < 3; j++ ){
			c.mat[i][j] = a.mat[i][j] + b.mat[i][j];
		}
	return(c);
}
istream & operator>>( istream &in, Matrix &m ){
	for ( int i = 0; i < 2; i++ )
		for ( int j = 0; j < 3; j++ )
			in >> m.mat[i][j];
	return(in);
}
ostream & operator<<( ostream &out, Matrix &m ){
	for ( int i = 0; i < 2; i++ ){
		for ( int j = 0; j < 3; j++ ){
			out << m.mat[i][j] << " ";
		}
		out << endl;
	}
	return(out);
}

//主函数已给定如下,提交时不需要包含,会自动添加到程序尾部



/* C++代码 */
int main()
{
    Matrix a,b,c;
    cin>>a;
    cin>>b;
    c=a+b;
    cout<<c<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_17497931/article/details/84321451