1、有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。
2、在上题的基础上,重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
题1程序如下
#include<iostream>
using namespace std; class Matrix { public: Matrix(); friend Matrix operator + (Matrix&,Matrix&); void input(); void display(); 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&c1,Matrix&c2) { Matrix c; for(int i=0;i<2;i++) for(int j=0;j<3;j++) c.mat[i][j]=c1.mat[i][j]+c2.mat[i][j]; return c; } void Matrix::input() { for(int i=0;i<2;i++) for(int j=0;j<3;j++) cin>>mat[i][j]; } void Matrix::display() { for(int i=0;i<2;i++) { for(int j=0;j<3;j++) cout<<mat[i][j]<<" "; cout<<endl; } cout<<endl; } int main() { Matrix a,b,c; a.input(); a.display(); b.input(); b.display(); c=a+b; c.display(); return 0;}
题2程序如下:
#include<iostream> #include<iomanip> 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&c1,Matrix&c2) { Matrix c; for(int i=0;i<2;i++) for(int j=0;j<3;j++) c.mat[i][j]=c1.mat[i][j]+c2.mat[i][j]; return c; } istream& operator >>(istream&input,Matrix&c1) { for(int i=0;i<2;i++) for(int j=0;j<3;j++) input>>c1.mat[i][j]; return input; } ostream& operator <<(ostream&output,Matrix&c2) { for(int i=0;i<2;i++) { for(int j=0;j<3;j++) output<<c2.mat[i][j]<<" "; cout<<endl; } cout<<endl; return output; } int main() { Matrix a,b,c; cin>>a; cout<<a; cin>>b; cout<<b; c=a+b; cout<<c; return 0; }