.编一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减。要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。
时间: 2024-05-07 16:19:04 浏览: 94
以下是一个示例程序实现:
```cpp
#include <iostream>
using namespace std;
const int ROWS = 2;
const int COLS = 3;
class Matrix {
public:
Matrix() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
data[i][j] = 0;
}
}
}
Matrix(int arr[ROWS][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
data[i][j] = arr[i][j];
}
}
}
Matrix operator+(const Matrix& other) {
Matrix result;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
result.data[i][j] = data[i][j] + other.data[i][j];
}
}
return result;
}
Matrix operator-(const Matrix& other) {
Matrix result;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
result.data[i][j] = data[i][j] - other.data[i][j];
}
}
return result;
}
void print() {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
private:
int data[ROWS][COLS];
};
int main() {
int arr1[ROWS][COLS] = { {1, 2, 3}, {4, 5, 6} };
Matrix m1(arr1);
cout << "m1:" << endl;
m1.print();
int arr2[ROWS][COLS];
cout << "Enter values for arr2:" << endl;
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cin >> arr2[i][j];
}
}
Matrix m2(arr2);
cout << "m2:" << endl;
m2.print();
Matrix sum = m1 + m2;
cout << "m1 + m2:" << endl;
sum.print();
Matrix diff = m1 - m2;
cout << "m1 - m2:" << endl;
diff.print();
return 0;
}
```
这个程序定义了一个 `Matrix` 类,其中包含了一个二维数组 `data`,它的大小是 `ROWS` 行 `COLS` 列。类中有两个构造函数,一个是默认构造函数,它将数组中的所有元素都初始化为 0,另一个是带有一个二维数组参数的构造函数,它将数组中的元素赋值给 `data`。此外,类还重载了 `+` 和 `-` 运算符,用于将两个 `Matrix` 对象相加和相减。
在 `main` 函数中,我们首先创建了一个 `Matrix` 对象 `m1`,并且通过构造函数将一个二维数组作为参数传递给它。然后,我们从键盘输入一个二维数组,创建了另一个 `Matrix` 对象 `m2`。接下来,我们使用重载的 `+` 和 `-` 运算符将 `m1` 和 `m2` 相加和相减,分别得到了 `sum` 和 `diff`,并将它们打印出来。
阅读全文