【问题描述】设计一个2行3列的矩阵类,重载运算符"+"和"-“,能实现矩阵类对象的加减运算;重载流插入运算符”<<“和流提取运算符”>>",使之能用于矩阵的输入和输出。
【输入形式】输入2个2行3列的矩阵数据。
【输出形式】输入的两个矩阵的加和减运算后的结果矩阵。
【样例输入】
请输入2行3列矩阵内容:
1 2 3
4 5 6
请输入2行3列矩阵内容:
1 2 3
4 5 6
【样例输出】
m1+m2=
2 4 6 8 10 12
m1-m2=
0 0 0 0 0 0二、代码实现
#includeusing namespace std; #include class Juzhen { private: int mat[2][3] ; public: Juzhen(); //这里全部重载为友元函数 friend Juzhen operator +(Juzhen &a, Juzhen &b); friend Juzhen operator -(Juzhen &a, Juzhen &b); //输入输出流只能重载为友元函数 friend istream &operator >>(istream &in, Juzhen &a); friend ostream &operator <<(ostream &out, Juzhen &a); }; Juzhen::Juzhen() { for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { mat[i][j] = 0;//所有元素默认为0 } } } Juzhen operator +(Juzhen &a, Juzhen &b) { Juzhen 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; } Juzhen operator -(Juzhen &a, Juzhen &b) { Juzhen 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, Juzhen &a) { cout << "请输入2行3列矩阵内容:" << endl; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { in >> a.mat[i][j]; } } return in; } ostream &operator <<(ostream &out, Juzhen &a) { for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { out << setw(5) << a.mat[i][j] << " " ; } out << endl; } return out; } int main() { Juzhen a, b, c; cin >> a; cin >> b; cout << "m1+m2=" << endl; c = a + b; cout << c; c = a - b; cout << "m1-m2=" << endl; cout << c; return 0; }



