complex类定义
2016-03-23 20:33
344 查看
关于complex类的定义:
#include<iostream> using namespace std; class complex { public: complex() {real=0;im=0;} complex(float a,float b):real(a),im(b){} friend complex operator+(complex& a,complex& b); friend complex operator-(complex& a,complex& b); friend complex operator*(complex& a,complex& b); friend complex operator/(complex& a,complex& b); friend istream& operator>> (istream&,complex&); friend ostream& operator<< (ostream& output,complex& a); void display(); private: float real; float im; }; void complex::display() { if(real<0.1&&real>-0.1) real = 0; if(im<0.1&&im>-0.1) im=0; if(im==0) { cout.setf(ios::fixed); cout.precision(1); cout<<real;} else if(real==0.0&&im!=0) { cout.setf(ios::fixed); cout.precision(1); cout<<im<<'i'; } else { if(im>0) {cout.setf(ios::fixed); cout.precision(1); cout<<real<<'+'<<im<<'i';} else { cout.setf(ios::fixed); cout.precision(1); cout<<real<<im<<'i'; } } } complex operator+(complex& a,complex& b) { complex ans; ans.real = a.real+b.real; ans.im = a.im+b.im; return ans; } complex operator-(complex& a,complex& b) { complex ans; ans.real = a.real-b.real; ans.im = a.im-b.im; return ans; } complex operator*(complex& a,complex& b) { complex ans; ans.real = a.real*b.real-a.im*b.im; ans.im = a.real*b.im+a.im*b.real; return ans; } complex operator/(complex& a,complex& b) { complex ans; ans.real = (a.real*b.real+a.im*b.im)/(b.real*b.real+b.im*b.im); ans.im = (a.im*b.real-a.real*b.im)/(b.real*b.real+b.im*b.im); return ans; } istream& operator>> (istream& input,complex& a) { input>>a.real>>a.im; return input; } ostream& operator<< (ostream& output,complex& a) { output<<'('<<a.real<<','<<a.im<<')'; return output; } int main() { complex a,b,ans1,ans2,ans3,ans4; cin>>a>>b; ans1=a+b; ans2=a-b; ans3=a*b; ans4=a/b; return 0; }