用成员函数重载运算符“+”和“-”,将两个二维数组相加和相减。要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入
时间: 2023-06-08 16:07:30 浏览: 188
非常感谢您使用 ChitGPT 进行对话。关于您的问题,以下是示例代码:
```cpp
#include <iostream>
class Matrix {
private:
int m, n;
int **data;
public:
Matrix(int mm, int nn) : m(mm), n(nn) {
data = new int*[m];
for (int i = 0; i < m; ++i) {
data[i] = new int[n];
for (int j = 0; j < n; ++j) {
data[i][j] = i + j;
}
}
}
Matrix(const Matrix& other) : m(other.m), n(other.n) {
data = new int*[m];
for (int i = 0; i < m; ++i) {
data[i] = new int[n];
for (int j = 0; j < n; ++j) {
data[i][j] = other.data[i][j];
}
}
}
~Matrix() {
for (int i = 0; i < m; ++i) {
delete[] data[i];
}
delete[] data;
}
Matrix operator+(const Matrix& other) {
Matrix result(m, n);
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
result.data[i][j] = data[i][j] + other.data[i][j];
}
}
return result;
}
Matrix operator-(const Matrix& other) {
Matrix result(m, n);
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
result.data[i][j] = data[i][j] - other.data[i][j];
}
}
return result;
}
void print() {
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
std::cout << data[i][j] << " ";
}
std::cout << std::endl;
}
}
};
int main() {
int m, n;
std::cout << "Enter m and n: ";
std::cin >> m >> n;
Matrix mat1(m, n);
Matrix mat2(mat1);
std::cout << "Matrix 1:" << std::endl;
mat1.print();
std::cout << "Matrix 2:" << std::endl;
mat2.print();
Matrix mat3 = mat1 + mat2;
std::cout << "Matrix 3 = Matrix 1 + Matrix 2:" << std::endl;
mat3.print();
Matrix mat4 = mat1 - mat2;
std::cout << "Matrix 4 = Matrix 1 - Matrix 2:" << std::endl;
mat4.print();
return 0;
}
```
在这个示例中,我们定义了 Matrix 类,包含两个成员变量 m 和 n,表示矩阵的行数和列数,以及一个二维整数数组 data,存储矩阵的元素。我们重载了加法和减法运算符,分别用于计算两个矩阵的和和差。构造函数用于初始化第一个矩阵,而另一个矩阵则从键盘读取输入。print 函数用于打印矩阵的元素。
请注意,示例代码仅供参考。实际的实现可能需要更多的错误检查和处理。