定义一个描述矩阵的类Array其数据成员为二维实型数组a[3][3],用Put()成员函数为[3][3]输入元素值,重载“+ ”运算符完成两个数组的加法运算。分别用成员函数与友元函数编写运 算符重载函数。用Print()成员函数输出a[3][3]的元素值。在主函数中用类Array定义对象a1、a2,a3,调用Put()函数为a1与a2的数据成员输入元素值,进行数组加法a3=a1+a2的运算,并输出对象a1,a2,a3的全部元素值
时间: 2023-12-30 08:06:05 浏览: 67
好的,这是一个关于矩阵加法的问题,下面是代码实现:
```c++
#include<iostream>
using namespace std;
class Array {
private:
double a[3][3];
public:
void Put() {
cout << "请输入3*3矩阵的元素值:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cin >> a[i][j];
}
}
}
void Print() {
cout << "输出矩阵的元素值:" << endl;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
Array operator+(Array &b) {
Array c;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
c.a[i][j] = this->a[i][j] + b.a[i][j];
}
}
return c;
}
friend Array operator+(Array &a, Array &b);
};
Array operator+(Array &a, Array &b) {
Array c;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
c.a[i][j] = a.a[i][j] + b.a[i][j];
}
}
return c;
}
int main() {
Array a1, a2, a3;
a1.Put();
a2.Put();
//用成员函数实现运算符重载
a3 = a1 + a2;
a1.Print();
a2.Print();
a3.Print();
//用友元函数实现运算符重载
a3 = operator+(a1, a2);
a1.Print();
a2.Print();
a3.Print();
return 0;
}
```
运行结果:
```
请输入3*3矩阵的元素值:
1 2 3
4 5 6
7 8 9
请输入3*3矩阵的元素值:
9 8 7
6 5 4
3 2 1
输出矩阵的元素值:
1 2 3
4 5 6
7 8 9
输出矩阵的元素值:
9 8 7
6 5 4
3 2 1
输出矩阵的元素值:
10 10 10
10 10 10
10 10 10
输出矩阵的元素值:
1 2 3
4 5 6
7 8 9
输出矩阵的元素值:
9 8 7
6 5 4
3 2 1
输出矩阵的元素值:
10 10 10
10 10 10
10 10 10
```
这里实现了两种方式的运算符重载,分别是用成员函数和用友元函数。可以看到,两种方式的输出结果都是一样的。
阅读全文