/*
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 作    者:王静
* 完成日期:2013  年 5  月 5 日
* 版 本 号:v1.0
* 输入描述:
* 问题描述:实现分数类中的运算符重载,
在分数类中可以完成分数的加减乘除(运算后再化简)、求反、
比较(6种关系)的运算。可以从第5周项目2的代码开始工作。
* 程序输出:
* 问题分析:
* 算法设计:略
*/
#include<iostream>
#include<cmath>
using namespace std;
class CFraction
{private:
int nume;  // 分子
int deno;  // 分母
public:CFraction(int nu=0,int de=1);    //置值,改变值时用CFraction simplify();        //化简(使分子分母没有公因子)//比较运算符(二目)的重载bool operator > (CFraction &t);bool operator < (CFraction &t);bool operator == (CFraction &t);//二目运算符的重载CFraction operator+(CFraction &n);CFraction operator-(CFraction &n);CFraction operator*(CFraction &n);CFraction operator/(CFraction &n);friend istream &operator >> (istream &cin,CFraction &e);friend ostream &operator << (ostream &cout,CFraction &e);
};CFraction::CFraction(int nu,int de)    //置值
{nume=nu;deno=de;
}
CFraction CFraction::simplify()
{CFraction n;n.nume=nume;n.deno=deno;int i;if(nume%deno==0){n.deno=1;n.nume=nume/deno;}else{if(nume>deno){for(i=2;i<=n.deno;i++){if(nume%i==0&&deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}else{for(i=2;i<=n.nume;i++){if(n.nume%i==0&&n.deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}}return n;
}
bool CFraction::operator > (CFraction &t)
{if(nume>t.nume||(nume==t.nume&&deno>t.deno)){return true;}else{return false;}
}
bool CFraction::operator < (CFraction &t)
{if(nume<t.nume||(nume==t.nume&&deno<t.deno)){return true;}else{return false;}
}
bool CFraction::operator == (CFraction &t)
{if(nume==t.nume&&deno==t.deno){return true;}else{return false;}
}
//二目运算符的重载
CFraction CFraction::operator+(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=(n.nume)*deno+nume*(n.deno);return t.simplify();
}
CFraction CFraction::operator-(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.deno-n.nume*deno;return t.simplify();
}
CFraction CFraction::operator*(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.nume;return t.simplify();
}
CFraction CFraction::operator/(CFraction &n)
{CFraction t;t.deno=deno*n.nume;t.nume=nume*n.deno;return t.simplify();
}
istream &operator >> (istream &cin,CFraction &e)
{cout<<"请输入分数的分子与分母"<<endl;cin>>e.nume>>e.deno;e.simplify();return cin;
}
ostream &operator << (ostream &cout,CFraction &e)
{if(e.deno==1){cout<<e.nume<<endl;}else{cout<<e.nume<<"/"<<e.deno<<endl;}return cout;
}
int main()
{CFraction n1,n2,n;//构造函数,初始化用cin>>n1>>n2;cout<<"n1为:"<<n1;cout<<"n2为:"<<n2;cout<<"下面比较两个时间大小:\n";if (n1>n2) cout<<"n1>n2"<<endl;if (n1<n2) cout<<"n1<n2"<<endl;if (n1==n2) cout<<"n1=n2"<<endl;cout<<endl;//下面自行设计对其他运算符的重载的测试n=n1+n2;cout<<"n1+n2="<<n;n=n1-n2;cout<<"n1-n2="<<n;n=n1*n2;cout<<"n1*n2="<<n;n=n1/n2;cout<<"n1/n2="<<n;return 0;
}

构造函数及运算符重载的函数声明
运行结果:
(贴图)

心得体会:

项目3-分数类中的运算符重载相关推荐

  1. 第十三周项目一-分数类中的运算符重载

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

  2. /项目3-分数类中的运算符重载

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

  3. 8-3 实现分数类中的运算符重载

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现分数类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现分数类中的运算符重 ...

  4. 第十二周项目二-Time类中的运算符重载

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

  5. 分数类中的运算符重载(续)

    问题及代码: /** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作 者:李盈盈* 完成日期:2015年 0 ...

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

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

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

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

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

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

  9. 8-2 实现Time类中的运算符重载

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现Time类中的 ...

最新文章

  1. 最牛逼的 Java 日志框架,性能无敌,横扫所有对手.....
  2. php调用c windows,php:在WINDOWS中设置计划任务执行PHP文件_PHP教程
  3. Makefile中的wilcard函数
  4. java maven调用hbase
  5. 华为手机下拉菜单没了_这才是华为正确的截图方式!别不当回事,白白浪费这么强大的手机...
  6. python全栈学习--day13(迭代器,生成器)
  7. DAY24:信息搜集
  8. 写博客时怎么录制动态图片或者小视频
  9. mysql 占比函数_MySQL通过分组计算百分比
  10. 人工智能实验:猴子摘香蕉问题(Python代码实现)
  11. Ubuntu 14.04 卸载搜狗拼音输入法及后续问题解决
  12. 15 离群点和高杠杆率点
  13. 微软重新评估收购雅虎提议
  14. Unbuntu16.04下cmake-gui安装
  15. git fatal: The remote end hung up unexpectedly 错误
  16. 为什么HashMap使用红黑树而不是AVL树或者B+树
  17. php购物车订单业务逻辑,购物车业务逻辑
  18. 黑盒测试和白盒测试优点和缺点
  19. 为什么应该为“数据时代原住民”打造智能产品?
  20. 新加坡风险投资公司将投资1000万美元建立加密货币区块链投资基金

热门文章

  1. geoserver发布切片影像地图
  2. 如何查看ps图片中边框的背景颜色
  3. 什么是集成测试?集成测试方法有哪些?
  4. SSR服务端渲染(nuxt重构项目)
  5. Mac电脑如何通过终端隐藏应用程序?
  6. 关于王者荣耀技术背景的文章
  7. 整理: 显示面板行业英文简称解析
  8. bit、byte、KB、M、G、T相互关系
  9. Unitimes三周年重磅第二弹 Gitlab中国线上首秀
  10. pycharm-03-工程结构