複數的抽象數據類型定義實現
#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