第9周项目1-复数类中的运算符重载(续)
2015-05-08 14:16
302 查看
/* *All rights reserved. *文件名称:main.cpp *作 者:姜 甜 甜 *完成日期:2015年5月8日 *版 本 号:v1.0 * *问题描述:在<a target=_blank href="http://blog.csdn.net/sxhelijian/article/details/45172591" target="_blank">复数类中的运算符重载</a>基础上 (1)再定义一目运算符 -,-c相当于0-c。 (2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。 */
#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+(const Complex &c1,const Complex &c2); friend Complex operator-(const Complex &c1,const Complex &c2); friend Complex operator*(const Complex &c1,const Complex &c2); friend Complex operator/(const Complex &c1,const Complex &c2); friend Complex operator -(const Complex &c); friend istream &operator >>(istream &input,Complex &c); friend ostream &operator <<(ostream &output,Complex &c); private: double real; double imag; }; Complex operator+(const Complex &c1,const Complex &c2) { return Complex(c1.real+c2.real,c1.imag+c2.imag); } Complex operator-(const Complex &c1,const Complex &c2) { return Complex(c1.real-c2.real,c1.imag-c2.imag); } Complex operator*(const Complex &c1,const Complex &c2) { return Complex(c1.real*c2.real-c1.imag*c2.imag,c1.real*c2.imag+c1.imag*c2.real); } Complex operator/(const Complex &c1,const Complex &c2) { Complex c; c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c; } Complex operator -(const Complex &c) { return Complex(-c.real,-c.imag); } istream &operator >>(istream &input,Complex &c) { char s1,s2; double a,b; while(1) { cout<<"input a complex number(a+bi或a-bi):"; input>>a>>s1>>b>>s2; if((s1=='+'||s1=='-')&&s2=='i') break; else cout<<"格式错误,再次输入:\n"; } c.real=a; c.imag=(s1=='+')?b:-b; return input; } ostream &operator <<(ostream &output,Complex &c) { output<<c.real; if(c.imag>0) cout<<"+"; output<<c.imag<<"i"<<endl; return output; } int main() { Complex c1,c2,c3; cout<<"c1:"; cin>>c1; cout<<"c1="<<c1; cout<<"c2:"; cin>>c2; cout<<"c2="<<c2; c3=c1+c2; cout<<"c1+c2="<<c3; c3=c1-c2; cout<<"c1-c2="<<c3; c3=c1*c2; cout<<"c1*c2="<<c3; c3=c1/c2; cout<<"c1/c2="<<c3; return 0; }
相关文章推荐
- 第9周项目1-复数类中的运算符重载(续)
- 第9周项目1——复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 第9周项目1-复数类中的运算符重载(续)
- 2015-第9周项目1-复数类中的运算符重载(续)
- 第9周项目1复数类的运算符重载续(1)
- 第9周项目1复数类的运算符重载续(2)
- 第9周项目1复数类中的运算符重载(续)
- C++第9周项目1 - 实现复数类中的运算符重载
- 第八周项目1-实现复数类中的运算符重载(3)
- 第九周上级项目1 复数类中的运算符重载(续)
- 第9周项目3-分数类中的运算符重载续(1)
- 第9周项目2 Time类中的运算符重载(续)
- 第十二周项目1复数类的运算符重载(3)
- 第12周项目1实现复数类的运算符重载3
- 第八周 项目一-复数类中的运算符重载(3)完整产品
- 第12周项目1-实现复数类中的运算符重载
- 第八周上机实践项目1-实现复数类中的运算符重载(可与double型运算的“基础工程”)
- 第7周项目2-实现复数类中的运算符重载(3.完善功能)
- 第八周 项目一--实现复数类中的运算符重载(2)