/*
* 作    者: 霍雨佳
* 完成日期:2014 年4月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,Complex &c2);
friend Complex operator-(Complex &c1,Complex &c2);
friend Complex operator*(Complex &c1,Complex &c2);
friend Complex operator/(Complex &c1,Complex &c2);
friend Complex operator+(Complex &c1,double c);
friend Complex operator-(Complex &c1,double c);
friend Complex operator*(Complex &c1,double c);
friend Complex operator/(Complex &c1,double c);
friend Complex operator+(double c,Complex &c1);
friend Complex operator-(double c,Complex &c1);
friend Complex operator*(double c,Complex &c1);
friend Complex operator/(double c,Complex &c1);
void display();
private:
double real;
double imag;
};
Complex operator+(Complex &c1,Complex &c2)
{
return  Complex(c2.real+c1.real,c2.imag+c1.imag);
}
Complex operator-(Complex &c1,Complex &c2)
{
return  Complex(c2.real-c1.real,c2.imag-c1.imag);
}
Complex operator*(Complex &c1,Complex &c2)
{
return  Complex((c2.real*c1.real-c1.imag*c2.imag),(c1.real*c2.imag+c1.imag*c2.real));
}
Complex operator/(Complex &c1,Complex &c2)
{
Complex c;
c.real=((c2.real*c1.real+c1.imag*c2.imag)/((c2.real*c2.real)+(c2.imag*c2.imag)));
c.imag=((c1.real*c2.imag-c1.imag*c2.real)/((c2.real*c2.real)+(c2.imag*c2.imag)));
return c;
}
Complex operator+(Complex &c1,double c)
{
return  Complex(c+c1.real,c1.imag);
}
Complex operator-(Complex &c1,double c)
{
return  Complex(c-c1.real,-c1.imag);
}
Complex operator*(Complex &c1,double c)
{
return  Complex((c*c1.real),(c1.imag*c));
}
Complex operator/(Complex &c1,double c)
{
Complex c7;
c7.real=((c*c1.real)/(c*c));
c7.imag=-((c1.imag*c)/(c*c));
return c7;
}
Complex operator+(double c,Complex &c1)
{
return  Complex(c+c1.real,c1.imag);
}
Complex operator-(double c,Complex &c1)
{
return  Complex(c1.real-c,c1.imag);
}
Complex operator*(double c,Complex &c1)
{
return  Complex((c*c1.real),(c1.imag*c));
}
Complex operator/(double c,Complex &c2)
{
Complex c7;
c7.real=((c2.real*c)/((c2.real*c2.real)+(c2.imag*c2.imag)));
c7.imag=((c*c2.imag)/((c2.real*c2.real)+(c2.imag*c2.imag)));
return c7;
}
void Complex::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
//下面定义用于测试的main()函数
int main()
{
double c=5;
Complex c1(3,4),c2(5,-10),c3;
cout<<"c1=";
c1.display();
cout<<"c2=";
c2.display();
c3=c1+c2;
cout<<"c1+c2=";
c3.display();
c3=c1-c2;
cout<<"c1-c2=";
c3.display();
c3=c1*c2;
cout<<"c1*c2=";
c3.display();
c3=c1/c2;
cout<<"c1/c2=";
c3.display();
cout<<endl;
cout<<"double类型·复数:"<<endl;
cout<<"c="<<c<<endl;
cout<<"c1=";
c1.display();
c3=c1+c;
cout<<"c1+c=";
c3.display();
c3=c1-c;
cout<<"c-c1=";
c3.display();
c3=c1*c;
cout<<"c1*c=";
c3.display();
c3=c1/c;
cout<<"c1/c=";
c3.display();
cout<<endl;
cout<<"复数·double类型:"<<endl;
cout<<"c="<<c<<endl;
cout<<"c2=";
c2.display();
c3=c2+c;
cout<<"c2+c=";
c3.display();
c3=c2-c;
cout<<"c2-c=";
c3.display();
c3=c2*c;
cout<<"c2*c=";
c3.display();
c3=c2/c;
cout<<"c/c2=";
c3.display();
return 0;
}


运行结果:

  因为不适用交换律,所以敲了好多代码,但自己有只是在重复代码的赶脚……

实现复数类中的运算符重载(含有double类型)相关推荐

  1. 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)

    问题及代码: [项目-实现复数类中的运算符重载] (1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public:Complex() ...

  2. 第7周-项目1-完整实现复数类中的运算符重载-扩展+、-、*、/运算符的功能

    问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:number.cpp *作 者:单昕昕 *完成日期:20 ...

  3. 第十二周-实现复数类中的运算符重载

    /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作    者:李德彪 *完成时间:2016年5月23日 * ...

  4. c++第八周【任务1-3】实现复数类中的运算符重载

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者: ...

  5. c++第八周【任务1-2】实现复数类中的运算符重载

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: c++第八周 ...

  6. c++第八周【任务1-1】实现复数类中的运算符重载

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: c++第八周 ...

  7. 第十二周项目一-实现复数类中的运算符重载(1)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月15日*版 本 号:v1. ...

  8. 实现复数类中的运算符重载

    /* *Copyright   (c)  2016,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者: 武聪 *完成日期:2016年5月31日 *版 ...

  9. 第十二周项目一-实现复数类中的运算符重载(3)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月15日*版 本 号:v1. ...

最新文章

  1. MIna框架I/O Service层设计
  2. 架构和产品的制衡——说说竞价拍卖那点事
  3. c#中的23种设计模式
  4. C#中几种循环语法的比较
  5. 创建react应用程序_使用SpringWebFlux的React式Web应用程序
  6. 基本算法研究1-冒泡排序算法测试
  7. 特斯拉回应海南碰撞事故:地面湿滑 车主踩制动踏板幅度较轻
  8. windows编译libevent
  9. Docker 集群环境实现的新方式
  10. 声明式 webService 客户端(Feign) 介绍文档
  11. 关于PPPOE拨号分配给用户32位掩码,且IP与网关相同的问题
  12. 分享一款超强看图软件。极速看图。这些看图软件比系统自带的强大多了!
  13. playframework 2.6 refused to apply inline style because it violates the following Content Security
  14. VB.NET 强制删除文件
  15. FAT文件系统引导扇区学习总结
  16. Hadoop 推测执行
  17. Python筛选某列满足条件的值(isin用法)
  18. Hbuilder中如何快速输入注释标签_vscode中20个让人眼前一亮的插件
  19. [10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: timeout
  20. 计算机视觉基础 图像滤波器

热门文章

  1. 删除网络共享计算机,如何把电脑上的共享文件删除
  2. 杭州烟花大会发生爆炸事故近百人受伤-烟花大会-杭州西湖-烟花燃放
  3. mysql 加盐_【mysql】当加盐算法需要改变,数据库该如何更新?
  4. 使用ESP32驱动ST7789,效果很好的IPS显示屏
  5. CAN\CANFD\FlexRay\LIN 一文深度解析常见通信协议
  6. Gorilla源码分析之gorilla/context源码分析
  7. 3DMAX快速入门 界面介绍【上】
  8. 【java基础】java继承从“我爸是李刚”讲起
  9. 【配置】利润中心会计启用
  10. 汇编语言C什么意思,C和汇编的对应—main之前之后的汇编到底在干什么