运算符重载加减乘除

#include 

using namespace std;

class Complex

{

public:

Complex(double r=0,double i=0):real(r),imag(i){}

Complex operator+(Complex &c1);

Complex operator-(Complex &c1);

Complex operator*(Complex &c1);

Complex operator/(Complex &c1);

void input(){cin>>real>>imag;}

void display(){cout<<"("<<real<<","<<imag<<"i)";}

private:

double real;

double imag;

};

int main()

{

Complex c1,c2,c3;

char a;

while(1)

{

  c1.input();

  cin>>a;

  c2.input();

  switch(a)

  {

  case '+':c3=c1+c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;

      case '-':c3=c1-c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;

  case '*':c3=c1*c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;

  case '/':c3=c1/c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;

  }

  return 0;

}

Complex Complex::operator+(Complex &c1)

{

Complex c;

c.real=real+c1.real;

c.imag=imag+c1.imag;

return c;

}

Complex Complex::operator-(Complex &c1)

{

Complex c;

c.real=real-c1.real;

c.imag=imag-c1.imag;

return c;

}

Complex Complex::operator*(Complex &c1)

{

Complex c;

c.real=real*c1.real-imag*c1.imag;

c.imag=imag*c1.real+real*c1.imag;

return c;

}

Complex Complex::operator/(Complex &c1)

{

Complex c;

c.real=(real*c1.real+imag*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);

c.imag=(imag*c1.real-real*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);

return c;

}

posted on 2012-12-07 23:11  木本  阅读(308)  评论(0编辑  收藏  举报

导航