关于complex类的定义:
#include<iostream>
using namespace std;
class complex
{
public:
complex()
{real=0;im=0;}
complex(float a,float b):real(a),im(b){}
friend complex operator+(complex& a,complex& b);
friend complex operator-(complex& a,complex& b);
friend complex operator*(complex& a,complex& b);
friend complex operator/(complex& a,complex& b);
friend istream& operator>> (istream&,complex&);
friend ostream& operator<< (ostream& output,complex& a);
void display();
private:
float real;
float im;
};
void complex::display()
{
if(real<0.1&&real>-0.1)
real = 0;
if(im<0.1&&im>-0.1)
im=0;
if(im==0)
{ cout.setf(ios::fixed);
cout.precision(1);
cout<<real;}
else if(real==0.0&&im!=0)
{
cout.setf(ios::fixed);
cout.precision(1);
cout<<im<<'i';
}
else
{
if(im>0)
{cout.setf(ios::fixed);
cout.precision(1);
cout<<real<<'+'<<im<<'i';}
else
{
cout.setf(ios::fixed);
cout.precision(1);
cout<<real<<im<<'i';
}
}
}
complex operator+(complex& a,complex& b)
{
complex ans;
ans.real = a.real+b.real;
ans.im = a.im+b.im;
return ans;
}
complex operator-(complex& a,complex& b)
{
complex ans;
ans.real = a.real-b.real;
ans.im = a.im-b.im;
return ans;
}
complex operator*(complex& a,complex& b)
{
complex ans;
ans.real = a.real*b.real-a.im*b.im;
ans.im = a.real*b.im+a.im*b.real;
return ans;
}
complex operator/(complex& a,complex& b)
{
complex ans;
ans.real = (a.real*b.real+a.im*b.im)/(b.real*b.real+b.im*b.im);
ans.im = (a.im*b.real-a.real*b.im)/(b.real*b.real+b.im*b.im);
return ans;
}
istream& operator>> (istream& input,complex& a)
{
input>>a.real>>a.im;
return input;
}
ostream& operator<< (ostream& output,complex& a)
{
output<<'('<<a.real<<','<<a.im<<')';
return output;
}
int main()
{
complex a,b,ans1,ans2,ans3,ans4;
cin>>a>>b;
ans1=a+b;
ans2=a-b;
ans3=a*b;
ans4=a/b;
return 0;
}