编写一个程序,用成员函数重载运算符“+”和“-”将两个二数组 相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维 数组的值由键盘输入。代码怎么写
时间: 2023-06-11 22:07:31 浏览: 213
以下是程序代码:
```c++
#include <iostream>
using namespace std;
class Matrix {
private:
int row, col;
int **matrix;
public:
// 构造函数
Matrix(int r, int c) : row(r), col(c) {
matrix = new int*[row];
for(int i = 0; i < row; i++) {
matrix[i] = new int[col];
for(int j = 0; j < col; j++) {
matrix[i][j] = i+j;
}
}
}
// 拷贝构造函数
Matrix(const Matrix &m) : row(m.row), col(m.col) {
matrix = new int*[row];
for(int i = 0; i < row; i++) {
matrix[i] = new int[col];
for(int j = 0; j < col; j++) {
matrix[i][j] = m.matrix[i][j];
}
}
}
// 销毁函数
~Matrix() {
for(int i = 0; i < row; i++) {
delete[] matrix[i];
}
delete[] matrix;
}
// 重载 "+" 运算符
Matrix operator+ (const Matrix &m) {
Matrix res(row, col);
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
res.matrix[i][j] = matrix[i][j] + m.matrix[i][j];
}
}
return res;
}
// 重载 "-" 运算符
Matrix operator- (const Matrix &m) {
Matrix res(row, col);
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
res.matrix[i][j] = matrix[i][j] - m.matrix[i][j];
}
}
return res;
}
// 输出矩阵
void print() {
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int row, col;
cout << "请输入矩阵的行数和列数:" << endl;
cin >> row >> col;
Matrix m1(row, col);
cout << "矩阵 1:" << endl;
m1.print();
Matrix m2(m1);
cout << "矩阵 2:" << endl;
m2.print();
Matrix m3(row, col);
cout << "请输入矩阵 3:" << endl;
for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
cin >> m3.matrix[i][j];
}
}
Matrix m4 = m1 + m2;
cout << "矩阵 4:" << endl;
m4.print();
Matrix m5 = m1 - m2;
cout << "矩阵 5:" << endl;
m5.print();
Matrix m6 = m1 + m3;
cout << "矩阵 6:" << endl;
m6.print();
Matrix m7 = m1 - m3;
cout << "矩阵 7:" << endl;
m7.print();
return 0;
}
```
程序中首先定义了一个`Matrix`类,其中包含了构造函数、拷贝构造函数、析构函数、重载运算符`+`和`-`等函数。在主函数中,先通过键盘输入获取要创建的矩阵的行数和列数,然后用构造函数创建了`m1`矩阵,用拷贝构造函数创建了`m2`矩阵,用键盘输入创建了`m3`矩阵。接着分别计算了`m1+m2`、`m1-m2`、`m1+m3`、`m1-m3`四个矩阵,并输出了结果。
阅读全文