/*
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 作    者:王静
* 完成日期:2013  年 4  月 24 日
* 版 本 号: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);
void display();
};
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();
}
void CFraction::display()
{
if(deno==1){
cout<<nume<<endl;
}else{
cout<<nume<<"/"<<deno<<endl;
}
}
int main()
{
CFraction n1(3,2),n2(1,2),n;//构造函数,初始化用
cout<<"n1为:";
n1.display();
cout<<"n2为:";
n2.display();
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;
n.display();
n=n1-n2;
n.display();
n=n1*n2;
n.display();
n=n1/n2;
n.display();
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 年 5 月 5 日 * 版 本 号: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. 以太坊代币空投合约的实现
  2. 在python中调用js或者nodejs要使用PyExecJs第三方包。
  3. 理解并取证:广域网上的PPP协议
  4. python实训项目-实验楼Python项目
  5. PCB第二节知识整理
  6. 软件架构设计的6大原则
  7. 存储过程实现邮件发送
  8. Javascript屏蔽IE和Firefox浏览器默认按键响应(快捷键功能)
  9. MFC windows程序设计(第三版)课后习题第一章
  10. 关于SWAT模型的一些原理(二)
  11. GoBatch简介 —— 一款基于go语言的企业级批处理框架(Golang下的SpringBatch)
  12. github托管静态网页
  13. 从金山毒霸看这个社会的“底线”
  14. Linux 命令量测试
  15. 部署k8s(15):持久化存储方案
  16. echarts legend图例显示数值和百分比
  17. 【五六七人口普查】省市两级人口受教育情况
  18. python word保存图_使用python matplotlib 画图导入到word中如何保证分辨率
  19. 怀揣美好前行 善良的人终究都会幸福
  20. NahimicSvc64.exe逻辑炸弹导致CPU直飚99%

热门文章

  1. 五岁的瑞幸:如何越坎重生?
  2. 谈一谈游戏AI - 行为树
  3. kail中的渗透测试工具
  4. 爬取东方财富的十大成交股
  5. 考研英语 - word-list-41
  6. 【考研英语-基础-长难句分析】特殊结构_分裂结构【插入式_同位语 插入语 状从 非限定从-从句后移式】
  7. 水电水利建设项目水环境与水生生态保护技术政策
  8. 问题 A: Hz的宝箱
  9. 计算机学院的横幅,毕业横幅标语(精选50句)
  10. 全排列__正月点灯笼视频笔记