编写一个程序,用成员函数重载运算符“+”和“-”将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。
时间: 2024-04-30 11:18:14 浏览: 104
两个二维数组相加,用成员函数重载运算符“+”和“-”
5星 · 资源好评率100%
以下是一个示例程序,实现了二维数组的加减法运算符重载:
```c++
#include<iostream>
using namespace std;
const int ROW = 3;
const int COL = 3;
class Matrix {
private:
int data[ROW][COL];
public:
Matrix(int initData[ROW][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
data[i][j] = initData[i][j];
}
}
}
Matrix operator+(Matrix &m) {
Matrix result(data);
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
result.data[i][j] += m.data[i][j];
}
}
return result;
}
Matrix operator-(Matrix &m) {
Matrix result(data);
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
result.data[i][j] -= m.data[i][j];
}
}
return result;
}
void print() {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int a[ROW][COL] = { {1,2,3},{4,5,6},{7,8,9} };
Matrix m1(a);
cout << "Matrix 1:" << endl;
m1.print();
int b[ROW][COL];
cout << "Enter Matrix 2:" << endl;
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
cin >> b[i][j];
}
}
Matrix m2(b);
cout << "Matrix 2:" << endl;
m2.print();
Matrix m3 = m1 + m2;
cout << "Matrix 1 + Matrix 2:" << endl;
m3.print();
Matrix m4 = m1 - m2;
cout << "Matrix 1 - Matrix 2:" << endl;
m4.print();
return 0;
}
```
程序中,我们定义了一个 `Matrix` 类,其中包含一个二维数组 `data`,表示矩阵的元素。在构造函数中,我们将一个二维数组作为参数,将其复制到 `data` 中。
然后,我们重载了加法和减法运算符,分别实现了矩阵的加法和减法。在这两个函数中,我们创建了一个新的 `Matrix` 对象 `result`,将当前对象的 `data` 复制到其中,然后将另一个 `Matrix` 对象的 `data` 加或减到其中。
最后,我们在 `main` 函数中创建了两个 `Matrix` 对象 `m1` 和 `m2`,其中 `m1` 的值由构造函数设置,`m2` 的值由键盘输入。然后,我们分别使用加法和减法运算符重载,将它们相加和相减,并打印结果。
阅读全文