问题及代码:

【项目-实现复数类中的运算符重载】
(1)请用类的成员函数,定义复数类重载运算符+、-、*、/,使之能用于复数的加减乘除

class Complex
{
public:Complex(){real=0;imag=0;}Complex(double r,double i){real=r; imag=i;}Complex operator+(const Complex &c2);Complex operator-(const Complex &c2);Complex operator*(const Complex &c2);Complex operator/(const Complex &c2);void display();
private:double real;double imag;
};
//下面定义成员函数//下面定义用于测试的main()函数
int main()
{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();return 0;
}

(2)请用类的友元函数,而不是成员函数,再次完成上面提及的运算符的重载;

/*Copyright(c)2016,烟台大学计算机与控制工程学院All rights reserced文件名称:test.cpp作    者:蔡汝佳完成日期:2016年6月2日版 本 号:v1.0问题描述:输入描述:程序输出:
*/#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 Complex &c1,const Complex &c2);friend Complex operator*(const Complex &c1,const Complex &c2);friend Complex operator/(const Complex &c1,const Complex &c2);void display();
private:double real;double imag;
};
//下面定义成员函数
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 Complex &c1,const Complex &c2)
{Complex c;c.real=c1.real-c2.real;c.imag=c1.imag-c2.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 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;
}void Complex::display()
{cout<<"("<<real<<","<<imag<<")"<<endl;
}
//下面定义用于测试的main()函数
int main()
{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();return 0;
}

运行结果:

知识点总结:

用友元函数实现运算符重载

学习心得:

//复数相加: (a+bi)+(c+di)=(a+c)+(b+d)i.

//复数相减:(a+bi)-(c+di)=(a-c)+(b-d)i.

//复数相乘:(a+bi)(c+di)=(ac-bd)+(bc+ad)i.

//复数相除:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 第八周--项目1--实现复数类中的运算符重载

    /* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 4 月 24 日 * 版 本 号:v1 ...

最新文章

  1. JavaScript初学者编程题(12)
  2. ckeditor_4.5.10_full,ckfinder_aspnet_2.6.2,插件使用
  3. 当汇错款时该怎么办?
  4. 让Windows7 x64 IIS7支持32位应用程序
  5. SYSTEM32 下的几乎所有文件的简单说明
  6. java nbsp_引用了实体 nbsp
  7. (第十一章)数据表的增删改
  8. DXUT框架剖析(2)
  9. bzoj 4653: [Noi2016]区间(尺取+线段树)
  10. PS小技巧 | 怎么又下雨了
  11. java私有 公开 保护_性能与设计相关的java中的私有/受保护方法
  12. matlab建立子程序,怎么实现matlab子程序的放置以及调用
  13. 博弈算法实现简单五子棋
  14. 爬取4399网站的图片
  15. Vue elementUI中的Breadcrumb面包屑
  16. 基于 arduino 的两轮自行车
  17. 阿里云ACP云计算对象存储OSS例题
  18. android gallary demo
  19. java date before,Java中的LocalDate isBefore()方法
  20. 多项式回归(PolynomialFeatures)

热门文章

  1. Hadoop_day04学习笔记
  2. PAT (Advanced Level) Practice 1053 Path of Equal Weight (30 分)
  3. 将社交玩法玩到极致的连咖啡,如何让咖啡成为日常消费?
  4. 亚马逊本土化视频拍摄-合规化的白帽运营玩法
  5. Vue3.2(语法糖写法) 入门推荐
  6. 2019年如何抓住社交电商的风口
  7. nslookup网络管理命令行工具
  8. BZOJ - 3884 上帝与集合的正确用法
  9. Guava之RateLimiter限流
  10. QT- label实现滚动字幕 (跑马灯)效果 -像素级