【问题描述】设计一个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
【样例说明】
【评分标准】 3个评分点
代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<istream>
#include<iomanip>
#include<ostream>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<fstream>
#include<stack>
#include<ctime>
#include<deque>
#include<queue>
#include <sstream>
#include <numeric>
#pragma warning (disable:4996)
using namespace std;
#include <iostream>
using namespace std;
class Matrix {
public:
Matrix() {}
Matrix(int a[][3]) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
m[i][j] = a[i][j];
}
}
}
Matrix operator+(const Matrix &rhs); // 重载加法运算符
Matrix operator-(const Matrix &rhs); // 重载减法运算符
friend ostream& operator<<(ostream& out, const Matrix &mat); // 重载输出运算符
friend istream& operator>>(istream& in, Matrix &mat); // 重载输入运算符
private:
int m[2][3];
};
Matrix Matrix::operator+(const Matrix &rhs) {
Matrix res;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
res.m[i][j] = m[i][j] + rhs.m[i][j];
}
}
return res;
}
Matrix Matrix::operator-(const Matrix &rhs) {
Matrix res;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
res.m[i][j] = m[i][j] - rhs.m[i][j];
}
}
return res;
}
ostream& operator<<(ostream& out, const Matrix &mat) {
for (int j = 0; j < 3; ++j) {
if (j == 0)
{
out << setw(5) << mat.m[0][j];//下次格式错误不想改了
}
else
{
out << setw(7) << mat.m[0][j];//下次格式错误不想改了
}
}
out << '\n';
for (int j = 0; j < 3; ++j) {
if (j == 0)
{
out << setw(5) << mat.m[1][j];//下次格式错误不想改了
}
else
{
out << setw(7) << mat.m[1][j];//下次格式错误不想改了
}
}
return out;
}
istream& operator>>(istream &in, Matrix &mat) {
cout << "请输入2行3列矩阵内容:\n";
for (int i = 0 ; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
in >> mat.m[i][j];
}
}
return in;
}
int main() {
Matrix m1, m2, res;
cin >> m1 >> m2;
res = m1 + m2;
cout << "m1+m2=\n" << res << endl;
res = m1 - m2;
cout << "m1-m2=\n" << res << endl;
return 0;
}