C++编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。
时间: 2024-02-06 18:12:22 浏览: 74
两个二维数组相加,用成员函数重载运算符“+”和“-”
5星 · 资源好评率100%
好的,下面是代码实现:
```C++
#include <iostream>
using namespace std;
class Matrix {
private:
int row, col;
int **arr;
public:
Matrix(int r, int c) {
row = r;
col = c;
arr = new int *[row];
for (int i = 0; i < row; i++) {
arr[i] = new int[col];
for (int j = 0; j < col; j++) {
arr[i][j] = i + j;
}
}
}
Matrix(const Matrix &m) {
row = m.row;
col = m.col;
arr = new int *[row];
for (int i = 0; i < row; i++) {
arr[i] = new int[col];
for (int j = 0; j < col; j++) {
arr[i][j] = m.arr[i][j];
}
}
}
Matrix operator+(Matrix &m) {
Matrix res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.arr[i][j] = arr[i][j] + m.arr[i][j];
}
}
return res;
}
Matrix operator-(Matrix &m) {
Matrix res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.arr[i][j] = arr[i][j] - m.arr[i][j];
}
}
return res;
}
void display() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int r, c;
cout << "请输入矩阵的行数和列数:" << endl;
cin >> r >> c;
Matrix m1(r, c);
Matrix m2(m1);
cout << "矩阵1:" << endl;
m1.display();
cout << "矩阵2:" << endl;
m2.display();
Matrix m3 = m1 + m2;
cout << "矩阵1 + 矩阵2:" << endl;
m3.display();
Matrix m4 = m1 - m2;
cout << "矩阵1 - 矩阵2:" << endl;
m4.display();
return 0;
}
```
其中,首先定义了 `Matrix` 类来表示二维数组,包括成员变量 `row` 和 `col` 表示行数和列数,以及成员变量 `arr` 表示二维数组本身。然后,定义了构造函数来设置第一个二维数组的值,以及拷贝构造函数来复制一个二维数组。最后,重载了 `+` 和 `-` 运算符来实现两个二维数组的相加和相减。在 `main` 函数中,首先从键盘输入第二个二维数组的值,然后分别对两个二维数组进行加减操作,并输出结果。
阅读全文