第二学期第九周项目1--实现复数类中的运算符重载(复数与浮点数)
2014-04-22 19:45
537 查看
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 沈远宏 * 完成日期:2013 年 04月15日 * 版 本 号:v1.0 * 问题描述:一个定义完整的类,是可以当作独立的产品发布,成为众多项目中的“基础工程”,这样的类在方案二的基础上, 扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d;c+d和d+c的结果 为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。 * 输出:两个复数+,-,*,/后的结果输出 */ #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); friend Complex operator+( Complex &c,double &d); friend Complex operator+(double &d,Complex &c); friend Complex operator-(double &d,Complex &c); friend Complex operator-(Complex &c,double &d); friend Complex operator*(Complex &c, double &d); friend Complex operator*( double &d,Complex &c); friend Complex operator/(Complex &c,double &d); friend Complex operator/( double &d,Complex &c); void input(); void display(); private: double real; char p,i; double imag; }; //下面定义成员函数 Complex operator-(Complex &c1) { return Complex(-c1.real,-c1.imag); } Complex operator+(Complex &c, double &d)//+ { return Complex(d+c.real,c.imag); } Complex operator+( double&d,Complex &c) { return Complex(d+c.real,c.imag); } Complex operator-(Complex &c ,double &d)//- { return Complex(d-c.real,c.imag); } Complex operator-( double&d,Complex &c) { return Complex(d-c.real,c.imag); } Complex operator*(Complex &c, double &d)//* { return Complex(d*c.real,c.imag); } Complex operator*( double&d,Complex &c) { return Complex(d*c.real,c.imag); } Complex operator/(Complex &c, double &d)// / { return Complex(d/c.real,c.imag); } Complex operator/( double&d,Complex &c) { return Complex(c.real/d,c.imag); } void Complex::display() { if(imag>0) { p='+'; } else { p='-'; imag=-imag; } cout<<real<<p<<imag<<"i\n"; } void Complex::input() { cin>>real>>p>>imag>>i; } //下面定义用于测试的main()函数 int main() { Complex c1,c3; double d; cout<<"请输入1个复数:\n"; c1.input(); cout<<"请输入一个浮点数:\n"; cin>>d; c3=c1+d; cout<<"c1+d="; c3.display(); c3=c1-d; cout<<"c1-d="; c3.display(); c3=c1*d; cout<<"c1*d="; c3.display(); c3=c1/d; cout<<"c1/d="; c3.display(); c3=-c3; cout<<"-(c1/d)="; c3.display(); cout<<"d+c1="; c3.display(); c3=d-c1; cout<<"d-c1="; c3.display(); c3=d*c1; cout<<"d*c1="; c3.display(); c3=d/c1; cout<<"d/c1="; c3.display(); c3=-c1; cout<<"-c1="; c3.display(); return 0; }
运行结果:
心得体会:
每次输验证码,要求零乘以六,结果不是0么= = =为什么每次输入都是错的
相关文章推荐
- N3_容易混淆的语法
- 最长公共子序列
- week 9 热身
- Linux文件系统概念
- MFC Picture Control控件显示图片
- Javascript构造对象方式
- 算法竞赛入门经典 第三章 习题
- hdu1028-Ignatius and the Princess III (母函数模板)
- bop_2014_round_2a
- 从零开始开发Android版2048 (一)初始化界面
- 第二学期第九周项目1--实现复数类中的运算符重载
- python 学习笔记 10 -- 正则表达式
- 日本語文法_2級
- ieee1754
- Android手电筒APP
- android开发人员您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快局机关
- 赂峭狭衷麓炯寥雷绕渍
- Ubuntu下彻底解决mysql中文乱码
- MAC配置SVN服务器
- ACM-计算几何之Leyni, LOLI and Line——hrbust1104