用c++编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,第二个二维数组的值由键盘输入
时间: 2024-03-24 20:35:56 浏览: 98
好的,以下是一个用C++编写的程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,第一个二维数组的值由构造函数设置,第二个二维数组的值由键盘输入:
```c++
#include <iostream>
using namespace std;
class Array2D {
private:
int **data;
int row, col;
public:
Array2D(int r, int c) {
row = r;
col = c;
data = new int*[row];
for (int i = 0; i < row; i++) {
data[i] = new int[col];
for (int j = 0; j < col; j++) {
data[i][j] = 10;
}
}
}
Array2D(const Array2D &arr) {
row = arr.row;
col = arr.col;
data = new int*[row];
for (int i = 0; i < row; i++) {
data[i] = new int[col];
for (int j = 0; j < col; j++) {
data[i][j] = arr.data[i][j];
}
}
}
~Array2D() {
for (int i = 0; i < row; i++) {
delete[] data[i];
}
delete[] data;
}
void input() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> data[i][j];
}
}
}
void output() const {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
Array2D operator+(const Array2D &arr) const {
Array2D res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.data[i][j] = data[i][j] + arr.data[i][j];
}
}
return res;
}
Array2D operator-(const Array2D &arr) const {
Array2D res(row, col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res.data[i][j] = data[i][j] - arr.data[i][j];
}
}
return res;
}
};
int main() {
int r, c;
cout << "请输入二维数组的行数和列数:" << endl;
cin >> r >> c;
Array2D arr1(r, c);
cout << "第一个二维数组:" << endl;
arr1.output();
Array2D arr2(r, c);
cout << "请输入第二个二维数组:" << endl;
arr2.input();
Array2D arr3 = arr1 + arr2;
cout << "两个二维数组相加的结果:" << endl;
arr3.output();
Array2D arr4 = arr1 - arr2;
cout << "两个二维数组相减的结果:" << endl;
arr4.output();
return 0;
}
```
程序中,`Array2D`类表示二维数组,构造函数中将第一个二维数组的值初始化为10,`input()`函数用于从键盘输入第二个二维数组的值,`output()`函数用于输出二维数组的值。`operator+`函数和`operator-`函数分别重载了加号运算符和减号运算符,用于将两个二维数组相加和相减。在`main()`函数中,先输入二维数组的行数和列数,然后创建两个`Array2D`对象,分别表示第一个二维数组和第二个二维数组,然后调用`+`和`-`运算符,将两个二维数组相加和相减,并输出结果。
阅读全文