满意答案
wkzxnz81138
2014.02.07
采纳率:51% 等级:12
已帮助:19761人
#include
#include
#include
using namespace std;class complex
{
private:
double re;
double im;public:
complex(){}
complex(double a,double b){re=a;im=b;}
void set(double a,double b){re=a;im=b;}
double geti()
{
return im;
}
double getr()
{
return re;
} complex operator +=(complex &a)
{ this->re+=a.re;
this->im+=a.im;
return *this;
} complex operator -=(complex &a)
{
this->re-=a.re;
this->im-=a.im;
return *this;
} complex operator *=(complex &a)
{
re =re*a.re-im*a.im;
im =re*a.im+a.re*im;
} complex operator /=(complex &a)
{
if(a.re||a.im)
{
re =(re*a.re+im*a.im)/(a.re*a.re+a.im*a.im);
im =(re*a.im-a.re*im)/(a.re*a.re+a.im*a.im);
}
} friend ostream& operator << (ostream& os, complex& c);
friend istream& operator >> (istream& is, complex& c);
friend complex operator +(complex &a, complex &b);
friend complex operator -(complex &a);
friend complex operator -(complex &a, complex &b);
friend complex operator *(complex &a, complex &b);
friend complex operator /(complex &a, complex &b);
friend int operator ==(complex &a, complex &b);
friend int operator !=(complex &a, complex &b);
};
complex operator +(complex &a, complex &b)
{
complex temp;
temp.re = a.re + b.re;
temp.im = a.im + b.im;
return temp;
}complex operator -(complex &a)
{
a.re=-a.re;
a.im=-a.im;
return a;
}complex operator -( complex &a, complex &b )
{
complex temp;
temp.re = a.re - b.re;
temp.im = a.im - b.im;
return temp;
}complex operator *(complex &a, complex &b)
{
complex temp;
temp.re = a.re * b.re - a.im * b.im;
temp.im = a.re * b.im + a.im * b.re;
return temp;
}complex operator /(complex &a, complex &b)
{
complex temp;
temp.re = (a.re * b.re + a.im * b.im) / (b.re * b.re + b.im * b.im);
temp.im = (a.im * b.re - a.re * b.im) / (b.re * b.re + b.im * b.im);
return temp;
} int operator ==(complex &a, complex &b)
{
return (a.re == b.re && a.im == b.im);
}int operator !=(complex &a, complex &b)
{
return !(a==b);
}
ostream& operator << (ostream& os, complex& c)
{
os << c.re;
if(c.im > 0)
os << "+" << c.im << "i" << endl;
else
os << c.im << "i" << endl;
return os;
}
istream& operator >> (istream& is, complex& c)
{ cout << "real:";
is >> c.re;
cout << "imaginary:";
is >> c.im;
return is;
}class realn:public complex
{
public:
realn(){}
realn(double a){set(a,0);}
friend ostream& operator <
{
os<
return os;
}
friend istream& operator >>(istream& is, realn& c)
{
double x;
is>>x;
c.set(x,0);
return is;
}
};int main()
{
double a,b,c,x1,x2,y1,y2;
cout<
cin>>a>>b>>c;
if(a==0)cout<
double d=b*b-4*a*c;
if(d>0)
{
x1=((-b)+sqrt(d))/(2*a);
y1=((-b)-sqrt(d))/(2*a);
realn temp(x1);
realn temp2(y1);
cout<
cout<
cout<
cout<
cout<
} else if(d==0)
{
x1=y1=(-b)/(2*a);
realn temp(x1);
cout<
cout<
} else if(d<0)
{
x1=(-b)/(2*a);x2=sqrt(-d)/(2*a);
y1=(-b)/(2*a);y2=-sqrt(-d)/(2*a);
complex temp(x1,x2);
complex temp2(y1,y2);
cout<
cout<
cout<
cout<
cout<
} return 0;
}
00分享举报