编一个程序,用成员函数重载运算符加号和减号将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设计,另一个二维数组的值由键盘输入
时间: 2023-12-20 21:22:07 浏览: 67
好的,以下是一个示例程序:
```c++
#include <iostream>
using namespace std;
const int ROW = 2; // 二维数组的行数
const int COL = 3; // 二维数组的列数
class Matrix
{
private:
int data[ROW][COL]; // 二维数组
public:
Matrix() // 默认构造函数,将第一个二维数组赋值为 1~6
{
int num = 1;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
data[i][j] = num++;
}
}
}
Matrix(int arr[ROW][COL]) // 构造函数,将第一个二维数组赋值为传入的数组
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
data[i][j] = arr[i][j];
}
}
}
Matrix operator+(const Matrix& mat) // 重载加号运算符,将两个二维数组相加
{
Matrix result;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
result.data[i][j] = this->data[i][j] + mat.data[i][j];
}
}
return result;
}
Matrix operator-(const Matrix& mat) // 重载减号运算符,将两个二维数组相减
{
Matrix result;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
result.data[i][j] = this->data[i][j] - mat.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 arr[ROW][COL]; // 第二个二维数组的值
cout << "Please enter " << ROW*COL << " numbers to fill the array:" << endl;
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
cin >> arr[i][j];
}
}
Matrix mat1, mat2(arr); // 创建两个 Matrix 类型的对象
cout << "mat1:" << endl;
mat1.print();
cout << endl;
cout << "mat2:" << endl;
mat2.print();
cout << endl;
cout << "mat1 + mat2:" << endl;
(mat1 + mat2).print(); // 使用重载的加号运算符
cout << endl;
cout << "mat1 - mat2:" << endl;
(mat1 - mat2).print(); // 使用重载的减号运算符
cout << endl;
return 0;
}
```
运行结果示例:
```
Please enter 6 numbers to fill the array:
1 2 3
4 5 6
mat1:
1 2 3
4 5 6
mat2:
1 2 3
4 5 6
mat1 + mat2:
2 4 6
8 10 12
mat1 - mat2:
0 0 0
0 0 0
```
阅读全文