编写一个程序,用友元函数重载运算符+和-将两个二维数组相加和相减,要求第一个二维数组的值由构造函数设计,另一个二维数组的值由键盘输入
时间: 2023-12-20 12:22:11 浏览: 132
好的,我可以为您编写这样一个程序。以下是示例代码:
```c++
#include <iostream>
using namespace std;
const int ROW = 2;
const int COL = 2;
class Matrix {
friend Matrix operator+(const Matrix& m1, const Matrix& m2);
friend Matrix operator-(const Matrix& m1, const Matrix& m2);
private:
int data[ROW][COL];
public:
Matrix(){
data[0][0] = 1;
data[0][1] = 2;
data[1][0] = 3;
data[1][1] = 4;
}
void showData() const {
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
cout << data[i][j] << " ";
}
cout << endl;
}
}
};
Matrix operator+(const Matrix& m1, const Matrix& m2) {
Matrix result;
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
result.data[i][j] = m1.data[i][j] + m2.data[i][j];
}
}
return result;
}
Matrix operator-(const Matrix& m1, const Matrix& m2) {
Matrix result;
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
result.data[i][j] = m1.data[i][j] - m2.data[i][j];
}
}
return result;
}
int main() {
Matrix m1;
Matrix m2;
cout << "Matrix m1:" << endl;
m1.showData();
cout << "Matrix m2:" << endl;
for(int i = 0; i < ROW; i++) {
for(int j = 0; j < COL; j++) {
cin >> m2.data[i][j];
}
}
cout << "Matrix m1 + m2:" << endl;
(m1 + m2).showData();
cout << "Matrix m1 - m2:" << endl;
(m1 - m2).showData();
return 0;
}
```
在这个程序中,我们首先定义了一个名为 Matrix 的类,其中包含一个名为 data 的二维数组。我们还定义了两个友元函数,用于重载运算符+和-。这些函数分别对两个矩阵进行相加和相减,并返回一个新的矩阵。
我们在构造函数中初始化了第一个矩阵 m1,而第二个矩阵 m2 则通过键盘输入获得。然后,我们调用重载的运算符+和-,并输出结果。
希望这个程序能为您提供帮助!
阅读全文