根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±bi”格式显示复数的成员函数print()。设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。 int main() { float x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部 Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1 Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数) Sub(imag1,imag2); //求两个复数之差并显示运算结果 return 0; }
时间: 2023-11-22 22:55:00 浏览: 141
根据题意,可以设计如下的Imaginary类:
```
#include <iostream>
using namespace std;
class Imaginary {
private:
float a, b;
public:
Imaginary(float real = 0, float imag = 0) : a(real), b(imag) {}
void print() const {
cout << a << (b > 0 ? "+" : "-") << abs(b) << "i" << endl;
}
friend Imaginary Add(const Imaginary& c1, const Imaginary& c2) {
Imaginary res(c1.a + c2.a, c1.b + c2.b);
cout << "Add result: ";
res.print();
return res;
}
friend Imaginary Sub(const Imaginary& c1, const Imaginary& c2) {
Imaginary res(c1.a - c2.a, c1.b - c2.b);
cout << "Sub result: ";
res.print();
return res;
}
};
int main() {
float x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
Imaginary imag1(x1, y1), imag2(x2, y2);
Add(imag1, imag2);
Sub(imag1, imag2);
return 0;
}
```
在Imaginary类中,构造函数用于初始化实部a和虚部b,print()函数用于按照“a±bi”格式显示复数,Add()函数和Sub()函数均为友元函数,用于进行复数的加减运算,并调用print()函数输出结果。在main()函数中,先输入4个数据分别表示要进行运算的两个复数的实部和虚部,然后创建两个Imaginary类对象imag1和imag2,接着分别调用Add()函数和Sub()函数进行加减运算,并输出结果。
阅读全文