第十二周项目一-实现复数类中的运算符重载(3)
来源:互联网 发布:mac 10.7.5 dmg 编辑:程序博客网 时间:2024/05/18 05:46
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年5月15日 *版 本 号:v1.0 * *问题描述:定义一个定义完整的类(是可以当作独立的产品发布,成为众多项目中的“基础工程”)。这样的类在(2)的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c+d和d+c的结果为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。*/#include <iostream>using namespace std;class Complex{public: friend Complex operator+(Complex &c1, Complex &c2); friend Complex operator+(double d1, Complex &c2); friend Complex operator+(Complex &c1, double d2); friend Complex operator-(Complex &c1, Complex &c2); friend Complex operator-(double d1, Complex &c2); friend Complex operator-(Complex &c1, double d2); friend Complex operator*(Complex &c1, Complex &c2); friend Complex operator*(double d1, Complex &c2); friend Complex operator*(Complex &c1, double d2); friend Complex operator/(Complex &c1, Complex &c2); friend Complex operator/(double d1, Complex &c2); friend Complex operator/(Complex &c1, double d2); Complex() { real=0.0; imag=0.0; } Complex(double r,double i) { real=r; imag=i; } void display();private: double real; double 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 d1, Complex &c2){ Complex c(d1,0); return c+c2;}Complex operator+(Complex &c1, double d2){ Complex c(d2,0); return c1+c;}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 d1, Complex &c2){ Complex c(d1,0); return c-c2;}Complex operator-(Complex &c1, double d2){ Complex c(d2,0); return c1-c;}Complex operator*(Complex &c1, Complex &c2) //复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.{ 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*(double d1, Complex &c2){ Complex c(d1,0); return c*c2;}Complex operator*(Complex &c1, double d2){ Complex c(d2,0); return c1*c;}Complex operator/(Complex &c1, Complex &c2) //复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i{ 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/(double d1, Complex &c2){ Complex c(d1,0); return c/c2;}Complex operator/(Complex &c1, double d2){ Complex c(d2,0); return c1/c;}void Complex::display(){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main(){ Complex c1(3,4),c2(5,-10),c3; double d=11; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); cout<<"d="<<d<<endl; c3=c1+c2; cout<<"c1+c2="; c3.display(); cout<<"c1+d="; (c1+d).display(); cout<<"d+c1="; (d+c1).display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); cout<<"c1-d="; (c1-d).display(); cout<<"d-c1="; (d-c1).display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); cout<<"c1*d="; (c1*d).display(); cout<<"d*c1="; (d*c1).display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); cout<<"c1/d="; (c1/d).display(); cout<<"d/c1="; (d/c1).display(); return 0;}
运行结果:
0 0
- 第十二周项目一-实现复数类中的运算符重载(3)
- 第十二周项目一(3)-实现复数类中的运算符重载
- 第十二周项目一实现复数中的运算符重载
- 第十二周项目一-实现复数类中的运算符重载(1)
- 第十二周项目一-实现复数类中的运算符重载(2)
- 第十二周项目一实现复数类中的运算符重载(1)
- 第十二周项目一(1)-实现复数类中的运算符重载
- 第十二周项目一(2)-实现复数类中的运算符重载
- 第十二周上机实践项目1(3):实现复数类中的运算符重载
- 第十二周项目一实现复数类中的运算重载(2)
- 第十二周上机实践项目-项目1-3-实现复数类中的运算符重载
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (3)
- 第十二周上机实践项目-项目1-(2)-实现复数类中的运算符重载
- 第十二周项目一复数中的运算符重载(3)
- 第十二周项目1-实现复数类中的运算符重载(3)
- 第十二周项目2:实现复数类中的运算符重载(3)
- 第十二周项目1-实现复数类中的运算符重载(3)
- 第十二周项目1-实现复数类中的运算符重载(1)
- 电子海图7Csahara.000解析结果
- 软考之路(三)——数据结构之查找表与哈希表
- LayoutInflater
- spark countByKey用法详解
- Promise
- 第十二周项目一-实现复数类中的运算符重载(3)
- HTML中的<head/>不能省略
- centos7的一些改变
- 自定义View遇到的小坑
- 【github】github 使用教程初级版【wins】
- MySQL函数-- FIND_IN_SET的使用
- 淘宝开源网络框架TBNET分析
- VS2013出现未能正确加载 microsoft.visualstudio.editor.implementation.editorpackage的解决方法
- mongodb主从复制小结