簡單c++實現複數的四則運算

hotdog04發表於2014-08-16

#include
#include
#include

using namespace std;

class complex
{
private:
 double real;
 double unreal;
 

public:
   complex(void):real(0),unreal(0){};
   complex(double v_real,double v_unreal):real(v_real),unreal(v_unreal){};
   complex(const complex & comx){
                 this->real = comx.get_real();
                 this->unreal = comx.get_unreal();
                 };
   bool operator==(const complex& comx){
        if(this->real == comx.real && this->unreal == comx.unreal){
                      return true;
                      }
        return false;
        };
  //加法相關運算 (a+bi)+(c+di)=(a+c)+(b+d)i.
   complex operator+(const complex& comx) {
     complex result((this->get_real()+comx.get_real()),(this->get_unreal()+comx.get_unreal()));
     return result;
   };
   complex operator+(const double a) {
     complex tmp(a,0);
     return (*this)+tmp;
   };
  
  void operator+=(const complex& comx) {
 
     *this = (*this)+comx;
   };
  void operator+=(const double a) {
     complex tmp(a,0);
     *this += tmp;
   };
  
    //減法相關運算   (a+bi)-(c+di)=(a-c)+(b-d)i
   complex operator-(const complex& comx) {
     complex result((this->get_real()-comx.get_real()),(this->get_unreal()-comx.get_unreal()));
     return result;
   };
   complex operator-(const double a) {
     complex tmp(a,0);
     return (*this)-tmp;
   };
  
  void operator-=(const complex& comx) {
     *this = *this-comx;
   };
   void operator-=(const double a) {
    complex tmp(a,0);
     *this -= tmp;
   }; 
  
     //乘法相關運算   (a+bi)(c+di)=(ac-bd)+(bc+ad)i
   complex operator*(const complex& comx) {
     complex result((this->get_real())*(comx.get_real())-(this->get_unreal())*(comx.get_unreal()),
                    (this->get_unreal())*(comx.get_real())+(this->get_real())*(comx.get_unreal()));
     return result;
   };
   complex operator*(const double a) {
     complex tmp(a,0);
     return (*this)*tmp;
   };
  
   void operator*=(const complex& comx) {
     *this = (*this) *(comx);
   };
   void operator*=(const double a) {
     complex tmp(a,0);     
     *this *=tmp;
   }; 
  
    //除法相關運算   :(a+bi)/(c+di)=(a+bi)*(c-di)* (1/(c*c+d*d))
   complex operator/(const complex& comx){
      complex tmp(comx.get_real(),comx.get_unreal()*(-1));
      
      return (*this)*tmp*(1/(pow(comx.get_real(),2)+pow(comx.get_unreal(),2)));
           }        
   complex operator/(const double a){
      complex tmp(a,0);
      return (*this)/tmp;
           }
   void  operator/=(const complex& comx){
      *this =  (*this)/comx;
           }       
          
   void  operator/=(const double a){
      complex tmp(a,0);
      *this/=tmp;
           }
  
  
  
  
    virtual ~complex(void){};
  double get_real() const {return this->real;};
  double get_unreal()const {return this->unreal;};
 
};

 

int main(int argc, char *argv[])
{
    complex a;
    complex c(5,0);
    complex b(3,3);
   
  //(a+bi)(c+di)=(ac-bd)+(bc+ad)i
   a = c*b;
  cout<   a=a/5;
  
   cout<    
   
   /* cout<     cout<     cout<    
  /*  if(a==c) cout<     a=b;
    if(a==b) {cout<     system("PAUSE");
    return EXIT_SUCCESS;
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20625855/viewspace-1252297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章