第9周项目1-复数类中的运算符重载(续)
2015-05-17 20:55
302 查看
#include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} friend Complex operator+(Complex &c1,Complex &c2); friend Complex operator+(double d,Complex &c2); friend Complex operator-(Complex &c1,Complex &c2); friend Complex operator-(double d,Complex &c2); friend Complex operator*(Complex &c1,Complex &c2); friend Complex operator*(double d,Complex &c2); friend Complex operator/(Complex &c1,Complex &c2); friend Complex operator/(double d,Complex &c2); Complex operator-(); friend istream& operator>>(istream &in,Complex &c); friend ostream& operator<<(ostream &out,Complex &c); void display(); private: double real; double imag; }; Complex Complex::operator-() { return (0-*this); } istream& operator>>(istream &in,Complex &c) { int r,i; char a,b; do { cout<<"input a complex number(a+bi或a-bi):"<<endl; in>>r>>a>>i>>b; }while(!((a=='+'||a=='-')&&b=='i')); c.real=r; c.imag=(a=='+')?i:-i; return in; } ostream& operator<<(ostream &out,Complex &c) { out<<"("<<c.real; if(c.imag>0) out<<"+"; out<<c.imag<<"i)"; return out; } Complex operator+(Complex &c1,Complex &c2) { Complex c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c; } Complex operator+(double d,Complex &c2) { return Complex(c2.real+d,c2.imag); } Complex operator-(Complex &c1,Complex &c2) { Complex c; c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag; return c; } Complex operator-(double d,Complex &c2) { return Complex(c2.real-d,c2.imag); } Complex operator*(Complex &c1,Complex &c2) { Complex c; c.real=c1.real*c2.real; c.imag=c1.imag*c2.imag; return c; } Complex operator*(double d,Complex &c2) { return Complex(c2.real*d,c2.imag); } Complex operator/(Complex &c1,Complex &c2) { Complex c; c.real=c1.real/c2.real; c.imag=c1.imag/c2.imag; return c; } Complex operator/(double d,Complex &c2) { return Complex(c2.real/d,c2.imag); } void Complex::display() { cout<<'('<<real<<','<<imag<<')'<<endl; } int main() { Complex c1,c2,c3; double d=5; cout<<"c1="; cin>>c1; cout<<"c2="; cin>>c2; cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; cout<<"d="<<d<<endl; c3=c1+c2; cout<<"c1+c2="<<c3<<endl; c3=5+c1; cout<<"c1+5="<<c3<<endl; c3=c1-c2; cout<<"c1-c2="<<c3<<endl; c3=5-c1; cout<<"5-c1="<<c3<<endl; c3=c1*c2; cout<<"c1*c2="<<endl; c3=5*c1; cout<<"c1*5="<<c3<<endl; c3=c1/c2; cout<<"c1/c2="<<c3<<endl; c3=5/c1; cout<<"5/c1="<<c3<<endl; return 0; }
运行结果:
相关文章推荐
- 第9周项目1——复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 2015-第9周项目1-复数类中的运算符重载(续)
- 第9周项目1复数类的运算符重载续(1)
- 第9周项目1复数类的运算符重载续(2)
- 第9周项目1复数类中的运算符重载(续)
- C++第9周项目1 - 实现复数类中的运算符重载
- 第9周项目1-复数类中的运算符重载(续)
- 第八周项目一-复数类的运算符重载
- 项目1:实现复数类的运算符重载
- 第九周项目一-复数类的中的运算符重载(续)
- 第九周 项目一 复数类中的运算符重载(续)
- 第12周项目1—实现复数类的运算符重载 (1)
- 第八周项目一实现复数类中的运算符重载(2)
- 第八周项目1 实现复数类中的运算符重载 (用类的友元函数)
- 第八周项目1——复数类中的运算符重载(2)
- 第八周 项目一 实现复数类中的运算符重载1
- 第八周 项目一--实现复数类中的运算符重载(1)
- 第9周项目2-Time类中的运算符重载(续)