複數的抽象數據類型

複數的抽象數據類型定義實現

#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED
#include<iostream.h>
#include <math.h>
class complex{
public:
    complex () {
        Re = Im = 0;
    }
    complex(double r){
        Re = r;
        Im = 0;
    }
    complex(double r, double i)
    {
        Re = r;
        Im = i;
    }
    double getReal(){return Re;}
    double getImag(){return Im;}
    void setReal(double r){Re = r;}
    void setImag(double i){Im = i;}
    complex operator= (complex ob){
        Re = ob.Re;
        Im = ob.Im;
    }
    complex& operator+(complex& ob);
    complex& operator- (complex& ob);
    complex& operator* (complex& ob);
    complex& operator/ (complex& ob);
    friend ostream& operator<<(ostream& os, complex& c);
private:
    double Re, Im;
};

complex& complex::operator+(complex& ob){
    complex result;
    result.Re = Re+ob.Re;
    result.Im = Im + ob.Im;
    return result;
};

complex& complex::operator-(complex& ob){
    complex result;
    result.Re = Re - ob.Re;
    result.Im = Im - ob.Im;
};

complex& complex::operator* (complex& ob){
    complex result;
    result.Re = Re*ob.Re-Im*ob.Im;
    result.Im = Re*ob.Im+Im*ob.Re;
    return result;
};

complex& complex::operator/ (complex& ob){
    complex result;
    double d = ob.Re*ob.Re+ob.Im*ob.Im;
    result.Re = (Re*ob.Re+Im*ob.Im)/d;
    result.Im = (Im*ob.Re - Re*ob.Im)/d;
    return result;
};

ostream& operator<< (ostream& os, complex & ob){
    return os<<ob.Re<<(ob.Im>=0.0)?"+":"-"<<fabs(ob.Im)<<"i";
}
#endif // COMPLEX_H_INCLUDED

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章