扩大
缩小

运算符重载实现复数的加减乘除

代码写的有点乱了,嘿嘿;

中间用到了复数的除法参考网站http://baike.baidu.com/view/1596407.htm

下面是代码:

  1 #include<iostream.h>
  2 class plural
  3 {
  4 private:                    //定义私有变量——实部,虚部;
  5    double real;
  6    double imag;
  7 public:
  8     plural(double r=0.0,double i=0.0){real=r;imag=i;}//初始化;
  9     double showreal(){return real;}
 10     double showimag(){return imag;}
 11  void show(){cout<<'('<<real<<','<<imag<<')'<<endl;}//输出显示
 12   void show1(){cout<<'('<<real<<','<<imag<<')';}//输出显示
 13 
 14     ////////////////////////////////////////////////////定义各种重载函数;
 15     plural operator+(plural p);
 16     plural operator-(plural p);
 17     plural operator*(plural p);
 18     plural operator/(plural p);
 19     plural operator+=(plural p);
 20     plural operator-=(plural p);
 21     plural operator*=(plural p);
 22     plural operator/=(plural p);
 23 };
 24 //////////////////////////////////////////////////////加法1;
 25 plural plural::operator+(plural p)
 26 {
 27     plural c;
 28     c.real=real+p.real;
 29     c.imag=imag+p.imag;
 30     return plural(c.real,c.imag);
 31 }
 32 //////////////////////////////////////////////////////减法1;
 33 plural plural::operator-(plural p)
 34 {
 35     plural c;
 36     c.real=real-p.real;
 37     c.imag=imag-p.imag;
 38     return plural(c.real,c.imag);
 39 }
 40 //////////////////////////////////////////////////////乘法1;
 41 plural plural::operator*(plural p)
 42 {
 43     plural c;
 44     c.real=real*p.real-imag*p.imag;
 45     c.imag=real*p.imag+imag*p.real;
 46     return plural(c.real,c.imag);
 47 }
 48 //////////////////////////////////////////////////////除法1;
 49 plural plural::operator/(plural p)
 50 {
 51     plural c;
 52   double t=(p.imag*p.imag+p.real*p.real);
 53     c.real=(real*p.real+imag*p.imag)/t;
 54     c.imag=(imag*p.real-real*p.imag)/t;
 55     return plural(c.real,c.imag);
 56 }
 57 //////////////////////////////////////////////////////加法2;
 58 plural plural::operator+=(plural p)
 59 {
 60     real+=p.real;
 61     imag+=p.imag;
 62     return *this;
 63 }
 64 //////////////////////////////////////////////////////减法2;
 65 plural plural::operator-=(plural p)
 66 {
 67     real-=p.real;
 68     imag-=p.imag;
 69     return *this;
 70 }
 71 //////////////////////////////////////////////////////乘法2;
 72 plural plural::operator*=(plural p)
 73 {
 74     real=real*p.real-imag*p.imag;
 75     imag=real*p.imag+imag*p.real;
 76     return *this;
 77 }
 78 //////////////////////////////////////////////////////除法2;
 79 plural plural::operator/=(plural p)
 80 {
 81     double t=(p.imag*p.imag+p.real*p.real);
 82     real=(real*p.real+imag*p.imag)/t;
 83     imag=(real*p.real+imag*p.imag)/t;
 84     return *this;
 85 }
 86 int main()
 87 {
 88 //////////////////////////////////////////////////////定义三个对象
 89     plural c1(1,2);
 90     plural c2(2,3);
 91     plural c3;
 92 //////////////////////////////////////////////////////输出初始化的三个对象值
 93     c1.show();
 94     c2.show();
 95     c3.show();
 96 //////////////////////////////////////////////////////输出c1,c2加减乘除的值c3;
 97     c3=c1+c2;     cout<<"c3"<<'=';c1.show1();cout<<'+';c2.show1();cout<<'=';c3.show();
 98     c3=c1-c2;     cout<<"c3"<<'=';c1.show1();cout<<'-';c2.show1();cout<<'=';c3.show(); 
 99     c3=c1*c2;     cout<<"c3"<<'=';c1.show1();cout<<'*';c2.show1();cout<<'=';c3.show(); 
100     c3=c1/c2;     cout<<"c3"<<'=';c1.show1();cout<<'/';c2.show1();cout<<'=';c3.show(); 
101 //////////////////////////////////////////////////////加减乘除
102 cout<<"改变前c1的值";c1.show1();cout<<"此时c2的值为";c2.show1();cout<<"加法"<<endl;c1+=c2;cout<<"改变后c1的值";c1.show();
103 cout<<"改变前c1的值";c1.show1();cout<<"此时c2的值为";c2.show1();cout<<"减法"<<endl;c1-=c2;cout<<"改变后c1的值";c1.show();
104 cout<<"改变前c1的值";c1.show1();cout<<"此时c2的值为";c2.show1();cout<<"乘法"<<endl;c1*=c2;cout<<"改变后c1的值";c1.show();
105 cout<<"改变前c1的值";c1.show1();cout<<"此时c2的值为";c2.show1();cout<<"除法"<<endl;c1/=c2;cout<<"改变后c1的值";c1.show();
106 //////////////////////////////////////////////////////加减乘除
107 cout<<"改变前c2的值";c2.show1();cout<<"此时c1的值为";c1.show1();cout<<"加法"<<endl;c2+=c1;cout<<"改变后c2的值";c2.show();
108 cout<<"改变前c2的值";c2.show1();cout<<"此时c1的值为";c1.show1();cout<<"减法"<<endl;c2-=c1;cout<<"改变后c2的值";c2.show();
109 cout<<"改变前c2的值";c2.show1();cout<<"此时c1的值为";c1.show1();cout<<"乘法"<<endl;c2*=c1;cout<<"改变后c2的值";c2.show();
110 cout<<"改变前c2的值";c2.show1();cout<<"此时c1的值为";c1.show1();cout<<"除法"<<endl;c2/=c1;cout<<"改变后c2的值";c2.show();
111 //////////////////////////////////////////////////////
112     return 0;
113 }

 

 

 

posted on 2012-12-17 13:56  LinuxPanda  阅读(3671)  评论(0编辑  收藏  举报

导航