您的位置:首页 > 其它

第9周项目1-复数类中的运算符重载(续)

2015-05-17 20:55 302 查看
#include <iostream>

using namespace std;

class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator+(Complex &c1,Complex &c2);
friend Complex operator+(double d,Complex &c2);
friend Complex operator-(Complex &c1,Complex &c2);
friend Complex operator-(double d,Complex &c2);
friend Complex operator*(Complex &c1,Complex &c2);
friend Complex operator*(double d,Complex &c2);
friend Complex operator/(Complex &c1,Complex &c2);
friend Complex operator/(double d,Complex &c2);
Complex operator-();
friend istream& operator>>(istream &in,Complex &c);
friend ostream& operator<<(ostream &out,Complex &c);
void display();
private:
double real;
double imag;
};

Complex Complex::operator-()
{
return (0-*this);
}

istream& operator>>(istream &in,Complex &c)
{
int r,i;
char a,b;
do
{
cout<<"input a complex number(a+bi或a-bi):"<<endl;
in>>r>>a>>i>>b;
}while(!((a=='+'||a=='-')&&b=='i'));
c.real=r;
c.imag=(a=='+')?i:-i;
return in;
}

ostream& operator<<(ostream &out,Complex &c)
{
out<<"("<<c.real;
if(c.imag>0)
out<<"+";
out<<c.imag<<"i)";
return out;
}

Complex operator+(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real+c2.real;
c.imag=c1.imag+c2.imag;
return c;
}

Complex operator+(double d,Complex &c2)
{
return Complex(c2.real+d,c2.imag);
}

Complex operator-(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real-c2.real;
c.imag=c1.imag-c2.imag;
return c;
}

Complex operator-(double d,Complex &c2)
{
return Complex(c2.real-d,c2.imag);
}

Complex operator*(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real*c2.real;
c.imag=c1.imag*c2.imag;
return c;
}

Complex operator*(double d,Complex &c2)
{
return Complex(c2.real*d,c2.imag);
}

Complex operator/(Complex &c1,Complex &c2)
{
Complex c;
c.real=c1.real/c2.real;
c.imag=c1.imag/c2.imag;
return c;
}

Complex operator/(double d,Complex &c2)
{
return Complex(c2.real/d,c2.imag);
}

void Complex::display()
{
cout<<'('<<real<<','<<imag<<')'<<endl;
}

int main()
{
Complex c1,c2,c3;
double d=5;
cout<<"c1=";
cin>>c1;
cout<<"c2=";
cin>>c2;
cout<<"c1="<<c1<<endl;
cout<<"c2="<<c2<<endl;
cout<<"d="<<d<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3<<endl;
c3=5+c1;
cout<<"c1+5="<<c3<<endl;
c3=c1-c2;
cout<<"c1-c2="<<c3<<endl;
c3=5-c1;
cout<<"5-c1="<<c3<<endl;
c3=c1*c2;
cout<<"c1*c2="<<endl;
c3=5*c1;
cout<<"c1*5="<<c3<<endl;
c3=c1/c2;
cout<<"c1/c2="<<c3<<endl;
c3=5/c1;
cout<<"5/c1="<<c3<<endl;
return 0;
}


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: