标题](这里写自本题考虑对运算符进行重载。分别重载复数运算的+,-,*,/,=(赋值)运算符,以及比较大小的<=(复数1的模是否小于等于复数2的模)运算符,其中,比较运算符按复数的模进行比较。测试程序根据输入的mode值分别测试各个函数是否编写正确。定义目录标题)
在这里插入代码片
```在这里描述函数接口:
i#include <iostream>
using namespace std;
class Complex {
double real;
double imag;
public:
Complex(double real=0, double imag=0);
Complex operator+(const Complex& c) const;
Complex operator-(const Complex& c) const;
Complex operator*(const Complex& c) const;
Complex operator/(const Complex& c) const;
Complex operator=(const Complex& c);
bool operator<=(const Complex& c) const;
friend ostream& operator<<(ostream& out, const Complex& c);
};
void bubble_sort(Complex[],int n);
在这里给出函数被调用进行测试的例子:
int main() {
double dReal1, dImag1, dReal2, dImag2;
int mode;
cin>>mode;
cin>>dReal1>>dImag1>>dReal2>>dImag2;
Complex c1(dReal1, dImag1);
Complex c2(dReal2, dImag2);
Complex c[6] = {c1,c2,c1+c2,c1-c2,c1*c2,c1/c2};
switch(mode)
{
case 1: cout << c[0]<<" "<<c[1];break;
case 2: cout << c[2];break;
case 3: cout << c[3];break;
case 4: cout << c[4];break;
case 5: cout << c[5];break;
case 6: bubble_sort(c,6);
for(int i=0;i<6;i++)
cout<<c[i]<<" ";
}
return 0;
}
Complex::Complex(double real ,double imag )
{
this->real = real;
this->imag = imag;
}
Complex Complex::operator+(const Complex & c) const
{
return Complex(real + c.real, imag + c.imag);
}
Complex Complex::operator-(const Complex& c) const
{
return Complex(real - c.real, imag - c.imag);
}
Complex Complex::operator*(const Complex& c) const
{
return Complex(real*c.real-imag*c.imag,real*c.imag+imag*c.real);
}
Complex Complex::operator/(const Complex& c)const
{
return Complex((real*c.real+imag*c.imag)/(c.real*c.real+c.imag*c.imag),(imag*c.real-real*c.imag)/(c.real*c.real+c.imag*c.imag));
}
Complex Complex::operator=(const Complex& c)
{
return Complex(this->real = c.real, this->imag = c.imag);
}
bool Complex::operator<=(const Complex& c) const
{
if (real*real+imag*imag<=c.real*c.real+c.imag*c.imag)
{
return 1;
}
else
{
return 0;
}
}
ostream& operator<<(ostream& out, const Complex& c)
{
out << c.real;
if (c.imag >=0)
{
out << "+";
}
out << c.imag<<"i";
return out;
}
void bubble_sort(Complex fushu[], int n)
{
Complex cnt;
for (int i = 0; i < n - 1; ++i)
{
for (int j = 0; j < n - 1 - i; ++j)
{
if (fushu[j+1]<=fushu[j])
{
cnt = fushu[j];
fushu[j] = fushu[j + 1];
fushu[j + 1] = cnt;
}
}
}
}
![在这里插入图片描述](https: