编写一个程序,用成员函数重载运算符“+”和“-”,将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。我要这个的代码
时间: 2024-03-25 10:36:09 浏览: 84
好的,以下是用 C++ 编写的程序,实现了二维数组的加法和减法运算符重载:
```c++
#include<iostream>
using namespace std;
class Array2D {
private:
int **data;
int n, m;
public:
Array2D(int n, int m) {
this->n = n;
this->m = m;
data = new int*[n];
for (int i = 0; i < n; i++) {
data[i] = new int[m];
for (int j = 0; j < m; j++) {
data[i][j] = i + j;
}
}
}
Array2D operator+(Array2D &other) {
Array2D res(n, m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res.data[i][j] = this->data[i][j] + other.data[i][j];
}
}
return res;
}
Array2D operator-(Array2D &other) {
Array2D res(n, m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
res.data[i][j] = this->data[i][j] - other.data[i][j];
}
}
return res;
}
void input() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> data[i][j];
}
}
}
void print() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int n, m;
cout << "请输入数组的行数和列数:" << endl;
cin >> n >> m;
Array2D arr1(n, m);
Array2D arr2(n, m);
cout << "请输入数组2的值:" << endl;
arr2.input();
cout << "数组1的值为:" << endl;
arr1.print();
cout << "数组2的值为:" << endl;
arr2.print();
Array2D sum = arr1 + arr2;
Array2D sub = arr1 - arr2;
cout << "数组1和数组2的和为:" << endl;
sum.print();
cout << "数组1和数组2的差为:" << endl;
sub.print();
return 0;
}
```
程序中,`Array2D` 类表示一个二维数组,它包括一个 `data` 成员变量,用于存储二维数组的值;`n` 和 `m` 成员变量分别表示二维数组的行数和列数。在构造函数中,会初始化 `data` 数组,将其赋值为每个元素的行号加上列号。`input` 和 `print` 方法分别用于从键盘读取数组的值和打印数组的值。
`Array2D` 类还重载了加法和减法运算符,实现了两个二维数组的加法和减法运算。在 `main` 函数中,首先从键盘读取一个二维数组的值,然后创建一个默认的二维数组,并将其与键盘输入的数组相加和相减。最后,打印两个结果数组的值。
阅读全文