1. 程式人生 > >YTUOJ——C++習題 矩陣求和--過載運算子

YTUOJ——C++習題 矩陣求和--過載運算子

題目描述

有兩個矩陣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;
}