复数四则及比较运算

#include <iostream.h>

#include <cmath>

class complex

{public:

     friend istream & operator >> (istream & ,complex &);  //提取运算符重载友元函数声明。

      

     friend ostream & operator << (ostream &,complex &);  //插入运算符重载友元函数声明。

      

     complex operator + (complex &);  //运算符“+”重载函数声明。

 

     complex operator - (complex &);  //运算符“-”重载函数声明。

      

     complex operator * (complex &);  //运算符“*”重载函数声明。

 

     complex operator / (complex &);  //运算符“/”重载函数声明。

      

     void bijiao(complex &,complex &);  // 比较函数bijiao声明。

private:

       double a;  //定义双精度型私有数据成员a 变量。

       double b;   //定义双精度型私有数据成员a 变量。

       };

 

complex complex::operator + (complex &t)  //类外定义运算符“+”重载函数。

       {   //复数相加实现过程。

            t.a=a+t.a;

            t.b=b+t.b;

       return t;

       }

 

complex complex::operator - (complex &t)  //类外定义运算符“-”重载函数。

       {  //复数相减实现过程。

            t.a=a-t.a;

            t.b=b-t.b;

       return t;

       }

 

complex complex::operator * (complex &t)  //类外定义运算符“*”重载函数。

       {  //复数相乘实现过程。

            double s;

            s=a*t.b+t.a*b;

               t.a=a*t.a-b*t.b;

            t.b=s;

       return t;

       }

      

complex complex::operator / (complex &t)  //类外定义运算符“/”重载函数。

       {  //复数相除实现过程。

            double s,v;

            v=-a*t.b+b*t.a;

         s=t.a*t.a+t.b*t.b;

            t.a=(a*t.a+b*t.b)/s;

            t.b=v;

       return t;

       }

      

void complex::bijiao(complex &z1,complex &z2)  //类外定义bijiao函数。

       {  //复数比较实现过程。

              double d1,d2;

              d1=pow(z1.a*z1.a+z1.b*z1.b,0.5);

              d2=pow(z2.a*z2.a+z2.b*z2.b,0.5);

              if(d1>d2) cout<<"|z1|>|z2|"<<endl;

              if(d1<d2) cout<<"|z1|<|z2|"<<endl;

              if(d1==d2) cout<<"|z1|=|z2|"<<endl;

       }           

 

istream & operator >> (istream &input ,complex &t)  //定义提取运算符重载函数。

   {  //输入对象实现过程。

input>>t.a>>t.b;

     return input;

   }

  

ostream & operator << (ostream &output ,complex &t)

   {  //输出对象实现过程。

if(t.b<0) output<<t.a<<t.b<<"i"<<endl;

           if(t.b>=0)  output<<t.a<<"+"<<t.b<<"i"<<endl;

     return output;

   }

 

int main()  //定义主函数。

 {

      complex z1,z2,z3;  //定义complex类的z1,z2,z3对象。

      char str;

      cout<<"计算两个复数的四则运算及比较运算:Z1=a+bi,Z2=c+di;"<<endl;

      cout<<"请输入: (a)_(b)_(运算符)_(c)_(d);()里写数字。"<<endl;

cout<<"“运算符”包括“+,-,*,/,?”,“_”为空格。"<<endl;

while(cin>>z1>>str>>z2)

       {

          if(str=='+')  {z3=z1+z2;cout<<"z1+z2="<<z3;}

          if(str=='-')  {z3=z1-z2;cout<<"z1-z2="<<z3;}

          if(str=='*')  {z3=z1*z2;cout<<"z1*z2="<<z3;}

       if(str=='/')  {z3=z1/z2;cout<<"z1/z2="<<z3;}

       if(str=='?') z3.bijiao(z1,z2);

     }

   return 0;   

 }

posted @ 2015-06-10 20:10  NYNU_ACM  阅读(475)  评论(0编辑  收藏  举报