题目描述
利用重载运算符,实现矩阵的加法,减法。
请重载加减运算符并自定义矩阵类完成相应的操作
输入
第一行为测试数据数
对于每组测试数据
第一行为矩阵的行数和列数
接下来分别为两个矩阵的各个元素
输出
输出矩阵的和与差
样例
输入:
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
-----------------
#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;
class ju {
int line;
int row;
int** a;
public:
ju(int l, int r, int** b):line(l),row(r)
{
a = new int*[l];
int i,j;
for (i = 0; i < line; i++)
{
a[i] = new int[row];
}
for (i = 0; i < line; i++)
{
for (j = 0; j < row; j++)
{
a[i][j] = b[i][j];
}
}
}
ju(ju& u) {
line = u.line;
row = u.row;
a = new int* [line];
int i, j;
for (i = 0; i < line; i++)
{
a[i] = new int[row];
}
for (i = 0; i < line; i++)
{
for (j = 0; j < row; j++)
{
a[i][j] = u.a[i][j];
}
}
}
ju operator+(ju u)
{
int i, j;
for (i = 0; i < line; i++)
{
for (j = 0; j < row; j++)
{
a[i][j] += u.a[i][j];
}
}
return *this;
}
ju operator-(ju u)
{
int i, j;
for (i = 0; i < line; i++)
{
for (j = 0; j < row; j++)
{
a[i][j] -= u.a[i][j];
}
}
return *this;
}
void print()
{
int i, j;
for (i = 0; i < line; i++)
{
for (j = 0; j < row; j++)
{
cout << a[i][j] << " ";
}
cout << endl;
}
}
};
int main()
{
int t;
cin >> t;
int l, r;
int** a, ** b;
while (t--)
{
cin >> l >> r;
a = new int* [l];
b = new int* [l];
int i, j;
for (i = 0; i < l; i++)
{
a[i] = new int[r];
b[i] = new int[r];
}
for (i = 0; i < l; i++)
{
for (j = 0; j < r; j++)
{
cin >> a[i][j];
}
}
for (i = 0; i < l; i++)
{
for (j = 0; j < r; j++)
{
cin >> b[i][j];
}
}
ju u1(l, r, a), u2(l, r, b);
ju u3 = u1;
u1 + u2;
cout << "Add:" << endl;
u1.print();
u3 - u2;
cout << "Minus:" << endl;
u3.print();
cout << "-----------------"<<endl;;
}
return 0;
}
ps:二维数组的空间问题需要注意