YTUOJ——C++習題 矩陣求和--過載運算子
阿新 • • 發佈:2018-11-28
題目描述
有兩個矩陣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; }