问题及代码:

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作    者:李盈盈  * 完成日期:2015年 05 月 07 日 * 版 本 号:v1.0 * * 问题描述:定义一目运算符 -,-c相当于0-c,定义Complex类中的<<和>>运算符的重载,实现输入和输出。* 输入描述:输入各复数。* 程序输出:输出加减乘除后的结果。*/
#include <iostream>
using namespace std;
class Complex
{
public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r;imag=i;}Complex operator-();//实现输入、输出的运算符重载friend ostream& operator << (ostream& output, const Complex& c);friend istream& operator >> (istream& input, Complex& c);//实现加减乘除的运算符重载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);
private:double real;double imag;
};
//实现输出的运算符重载
ostream& operator << (ostream& output, const Complex& c)
{output<<"("<<c.real;if(c.imag>=0) output<<"+";output<<c.imag<<"i)";return output;
}
//实现输入的运算符重载
istream& operator >> (istream& input, Complex& c)
{int a,b;char sign,i;do{cout<<"input a complex number(a+bi或a-bi):";input>>a>>sign>>b>>i;}while(!((sign=='+'||sign=='-')&&i=='i'));c.real=a;c.imag=(sign=='+')?b:-b;return input;
}
Complex Complex::operator-()
{return(0-*this);
}
//复数相加:(a+bi)+(c+di)=(a+c)+(b+d)i.
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;
}
//复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i.
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;
}//复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.
Complex operator*(Complex &c1, 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*(double d1, Complex &c2)
{Complex c(d1,0);return c*c2;
}
Complex operator*(Complex &c1, double d2)
{Complex c(d2,0);return c1*c;
}//复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i
Complex operator/(Complex &c1, 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/(double d1, Complex &c2)
{Complex c(d1,0);return c/c2;
}Complex operator/(Complex &c1, double d2)
{Complex c(d2,0);return c1/c;
}int main()
{Complex c1,c2,c3;double d=11;cout<<"c1: "<<endl;;cin>>c1;cout<<"c2: "<<endl;cin>>c2;cout<<"c1="<<c1<<endl;cout<<"c2="<<c2<<endl;cout<<"d="<<d<<endl;cout<<"-c1="<<(-c1)<<endl;c3=c1+c2;cout<<"c1+c2="<<c3<<endl;cout<<"c1+d="<<(c1+d)<<endl;cout<<"d+c1="<<(d+c1)<<endl;c3=c1-c2;cout<<"c1-c2="<<c3<<endl;cout<<"c1-d="<<(c1-d)<<endl;cout<<"d-c1="<<(d-c1)<<endl;c3=c1*c2;cout<<"c1*c2="<<c3<<endl;cout<<"c1*d="<<(c1*d)<<endl;cout<<"d*c1="<<(d*c1)<<endl;c3=c1/c2;cout<<"c1/c2="<<c3<<endl;cout<<"c1/d="<<(c1/d)<<endl;cout<<"d/c1="<<(d/c1)<<endl;return 0;
}

运行结果:

复数中的运算符重载(续)相关推荐

  1. 实现复数类中的运算符重载(含有double类型)

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现复数类中的运算符重载. * 样例输入: * 样例输出: * 问题分析:一个定义完整的类,是 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. C++中的运算符重载基础

    1.C++中的运算符重载基础 所谓重载,就是赋予新的含义.函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作.运算符重载(Operator Ov ...

  9. 4-1 复数类的运算符重载

    4-1 复数类的运算符重载 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目的练习 ...

最新文章

  1. oracle 复制 mysql_MySQL与Oracle之间互相拷贝数据的Java程序
  2. python 引用传递和值传递(实参,形参)
  3. Python中的Optional和带默认值的参数
  4. 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
  5. 机房冒水导致1500万元研发的源代码消失,软件公司起诉物业索赔七百万
  6. 仅通过崩溃地址找出源代码的出错行
  7. MarkdownPad安装以及绘制 UML 图
  8. SpringBoot出现Request method ‘GET‘ not supported
  9. 转载:使用 frida hook 插件化 apk ( classloader )
  10. java list stream avg_Java 8 Stream API中的多个聚合函数
  11. pku2777 Count Color
  12. C++入门经典-例3.9-使用嵌套表达式判断一个数是否是3和5的整数倍
  13. Mysql优化(出自官方文档) - 第七篇
  14. java工具类解压缩zip和rar
  15. 读后感系列2:《看见》柴静(一)
  16. 使用Flash在线制作头像
  17. [uboot]What is MLO file?
  18. linux下的oracle安装
  19. linux新下载的源码或者官方提供的内核查看具体的内核版本
  20. 《三峡好人》,《黄金甲》所折射的电影学意义

热门文章

  1. Vue - 满意度调查评价功能,表情图片打分评分组件(非星星评分组件,类似抖音商品满意度好评、中评、差评评价功能)代码干净整洁注释详细无 BUG,无任何第三方插件依赖,完整功能实例源码插件
  2. 如何判断img加载完成?
  3. c语入门,心得和自我反省
  4. 软件架构设计之如何编排复杂多任务
  5. 《铁甲雄兵》能在海外火起来的秘诀是……
  6. 路由器 设置 端口映射
  7. 答疑中小白酒企业,爱码物联助力市场营销!
  8. 制作个人网页过程(附源码)
  9. Linux添加IP黑名单
  10. Nginx 动态添加IP黑名单