题目描述
利用重载运算符,实现矩阵的加法,减法。
请重载加减运算符并自定义矩阵类完成相应的操作
输入
第一行为测试数据数
对于每组测试数据
第一行为矩阵的行数和列数
接下来分别为两个矩阵的各个元素
输出
输出矩阵的和与差
IO模式
本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。
输入样例:
2
4 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
9 8 7 6 5
4 3 2 1 0
-1 5 6 9 1
2 0 2 1 6
4 5
9 8 7 6 5
4 3 2 1 0
-1 5 6 9 1
2 0 2 1 6
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
输出样例:
Add:
10 10 10 10 10
10 10 10 10 10
10 17 19 23 16
18 17 20 20 26
Minus:
-8 -6 -4 -2 0
2 4 6 8 10
12 7 7 5 14
14 17 16 18 14
-----------------
Add:
10 10 10 10 10
10 10 10 10 10
10 17 19 23 16
18 17 20 20 26
Minus:
8 6 4 2 0
-2 -4 -6 -8 -10
-12 -7 -7 -5 -14
-14 -17 -16 -18 -14
-----------------
AC代码:
#include <iostream>
using namespace std;
class matrix {
private:
int **p;
int m, n;
public:
matrix() {
}
matrix(int mm, int nn) : m(mm), n(nn) {
int i, j;
p = new int *[m];
for (i = 0; i < m; i++) {
p[i] = new int[n];
}
}
void set() {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
cin >> p[i][j];
}
}
}
matrix operator+(matrix &a) {
matrix result(m, n);
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
result.p[i][j] = p[i][j] + a.p[i][j];
}
}
return result;
}
matrix operator-(matrix &a) {
matrix result(m, n);
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
result.p[i][j] = p[i][j] - a.p[i][j];
}
}
return result;
}
void print() const {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
cout << p[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int t, m, n;
cin >> t;
while (t--) {
cin >> m >> n;
matrix a(m, n);
a.set();
matrix b(m, n);
b.set();
matrix c = a + b;
matrix d = a - b;
cout << "Add:" << endl;
c.print();
cout << "Minus:" << endl;
d.print();
cout << "-----------------" << endl;
return 0;
}
}