第九周 项目一--复数类中的运算符重载(续)
来源:互联网 发布:四物汤处方配比优化 编辑:程序博客网 时间:2024/05/17 00:05
问题及代码:
/** Copyright (c) 2015,烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作者:吴胜男* 完成日期:2015年4月29日* 版本号:v1.0** 问题描述:在复数类中的运算符重载基础上(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 double d,const Complex &c2); friend Complex operator+(const Complex &c1,const double d); friend Complex operator-(const Complex &c1,const Complex &c2); friend Complex operator-(const double d,const Complex &c2); friend Complex operator-(const Complex &c1,const double d); friend Complex operator*(const Complex &c1,const Complex &c2); friend Complex operator*(const double d,const Complex &c2); friend Complex operator*(const Complex &c1,const double d); friend Complex operator/(const Complex &c1,const Complex &c2); friend Complex operator/(const double d,const Complex &c2); friend Complex operator/(const Complex &c1,const double d); friend ostream&operator<<(ostream&,Complex&); friend istream&operator>>(istream&,Complex&); Complex operator-();private: double real; double imag;};//下面定义成员函数ostream&operator<<(ostream&output,Complex&c){ output<<"("<<c.real; if(c.imag>=0)output<<"+"; output<<c.imag<<"i)"<<endl; return output;}istream&operator>>(istream&input,Complex&c){ input>>c.real>>c.imag; return input;}Complex Complex::operator-(){ Complex c; c.real=-real; c.imag=-imag; return c;}Complex operator+(const Complex &c1,const Complex &c2){ Complex c; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; return c;}Complex operator+(const double d,const Complex &c2){ Complex c; c.real=d+c2.real; c.imag=c2.imag; return c;}Complex operator+(const Complex &c1,const double d){ Complex c; c.real=d+c1.real; c.imag=c1.imag; return c;}Complex operator-(const Complex &c1,const Complex &c2){ Complex c; c.real=c1.real-c2.real; c.imag=c1.imag-c2.imag; return c;}Complex operator-(const double d,const Complex &c2){ Complex c; c.real=d-c2.real; c.imag=-c2.imag; return c;}Complex operator-(const Complex &c1,const double d){ Complex c; c.real=c1.real-d; c.imag=c1.imag; return c;}Complex operator*(const Complex &c1,const Complex &c2){ Complex c; c.real=c1.real*c2.real-c1.imag*c2.imag; c.imag=c1.imag*c2.real+c1.real*c2.imag; return c;}Complex operator*(const double d,const Complex &c2){ Complex c; c.real=d*c2.real; c.imag=d*c2.imag; return c;}Complex operator*(const Complex &c1,const double d){ Complex c; c.real=d*c1.real; c.imag=d*c1.imag; return c;}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 double d,const Complex &c2){ Complex c; c.real=(d*c2.real)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(-d*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c;}Complex operator/(const Complex &c1,const double d){ Complex c; c.real=(c1.real*d)/(d*d); c.imag=(c1.imag*d)/(d*d); return c;}//下面定义用于测试的main()函数int main(){ Complex c1(3,4),c2(5,-10),c3,c4; cout<<"输入c4的实部和虚部:"; cin>>c4; cout<<"c4="<<c4; cout<<"c1="; cout<<c1; cout<<"c2="; cout<<c2; c3=c1+c2; cout<<"c1+c2="; cout<<c3; c3=c1-c2; cout<<"c1-c2="; cout<<c3; c3=c1*c2; cout<<"c1*c2="; cout<<c3; c3=c1/c2; cout<<"c1/c2="; cout<<c3; c3=c1+2; cout<<"c1+2="; cout<<c3; c3=3+c1; cout<<"3+c1="; cout<<c3; c3=c2-2; cout<<"c2-2="; cout<<c3; c3=1-c2; cout<<"1-c2="; cout<<c3; c3=c1*3; cout<<"c1*3="; cout<<c3; c3=5*c1; cout<<"5*c1="; cout<<c3; c3=c2/5; cout<<"c2/5="; cout<<c3; c3=6/c1; cout<<"6/c1="; cout<<c3; c3=-c1; cout<<"-c3="<<c3; return 0;}
运行结果:
0 0
- 第九周项目一复数类中的运算符重载(续)(1)
- 第九周项目一复数类中的运算符重载(续)(2)
- 第九周 项目一:复数类中的运算符重载(续)
- 第九周项目一: 复数类中的运算符重载(续)
- 第九周项目一——复数类中的运算符重载(续)
- 第九周 项目一-复数类中的运算符重载(续)
- 15第九周项目一——复数类中的运算符重载(续)
- 第九周项目一--复数类中的运算符重载(续)
- 第九周 课后实践:项目一——复数类中的运算符重载(续)
- 第九周项目一 复数类中的运算符重载(续)
- 第九周项目一:复数类中的运算符重载(续)
- 2014年第九周项目一:复数类中的运算符重载(续)
- 2015年第九周项目一:复数类中的运算符重载(续)(2)
- 第九周 项目一 复数类中的运算符重载(续)
- 第九周项目一复数类中的运算符重载(续)
- 第九周项目一-复数类的中的运算符重载(续)
- 第九周项目一 复数类中的运算符重载(续)
- 第九周 项目一 复数类中的运算符重载(续)
- 第八周 项目四--String类的构造
- UIToggle修改状态无效的原因及解决办法[NGUI]
- 用OpenNETCF进行文件(数据)同步
- DirectX学习记录
- 写保留位,会导致不可预料的错误 !
- 第九周 项目一--复数类中的运算符重载(续)
- 《3D数学基础:图像与游戏开发》读书笔记(一)
- 程序员在职业生涯中最易犯的7个错误
- 十大编程算法助程序员走上高手之路
- 解放双手——Android自动化测试
- EasyUI tabs update 方法后控件无法渲染问题处理
- https://leetcode.com/problems/search-a-2d-matrix/
- android开发网站
- 最长回文子字符串