C++習題 矩陣求和--過載運算子
阿新 • • 發佈:2019-01-04
/* 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 */ #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() { for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { mat[i][j]=0; } } } Matrix operator+(Matrix &p1,Matrix &p2) { Matrix p; for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { p.mat[i][j]=p1.mat[i][j]+p2.mat[i][j]; } } return p; } ostream& operator<<(ostream& out,Matrix& p) { for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { out<<p.mat[i][j]<<" "; if(i==0&&j==2) out<<endl; } } return out; } istream& operator>>(istream&in,Matrix&p) { for(int i=0; i<2; i++) { for(int j=0; j<3; j++) { in>>p.mat[i][j]; } } return in; } int main() { Matrix a,b,c; cin>>a; cin>>b; c=a+b; cout<<c<<endl; return 0; }