//实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。
#include <iostream>
#include <stdlib.h>class Rational
{
public:Rational(int num,int denom);                   //实现有理数的形式"num/denom"Rational operator+(Rational rhs);              //加法重载Rational operator-(Rational rhs);              //减法重载Rational operator*(Rational rhs);              //乘法重载Rational operator/(Rational rhs);              //除法重载void print();                                  //打印结果输出private:void normalize();      //对分数的简化处理int numerator;         //分子int denominator;       //分母
};Rational::Rational(int num,int denom)
{numerator = num;denominator = denom;normalize();
}void Rational::normalize()
{//确保分母为正if(denominator < 0){numerator = -numerator;denominator = -denominator;}//欧几里得算法int a = abs(numerator);int b = abs(denominator);while(b>0){int t = a%b;a = b;b = t;}numerator/=a;denominator/=a;
}Rational Rational::operator+(Rational rhs)
{int a = numerator;int b = denominator;int c = rhs.numerator;int d = rhs.denominator;int e = a*b +c*d;int f = b*d;return Rational(e,f);
}Rational Rational::operator-(Rational rhs)
{rhs.numerator = -rhs.numerator;return operator+(rhs);
}Rational Rational::operator*(Rational rhs)
{int a = numerator;int b = denominator;int c = rhs.numerator;int d = rhs.denominator;int e = a*c;int f = b*d;return Rational(e,f);
}Rational Rational::operator/(Rational rhs)
{int t = rhs.numerator;rhs.numerator = rhs.denominator;rhs.denominator = t;return operator*(rhs);
}void Rational::print()
{if(numerator%denominator == 0)std::cout<<numerator / denominator;elsestd::cout<<numerator <<"/"<<denominator;
}int main()
{Rational f1(2,16);Rational f2(7,8);Rational res = f1+f2;f1.print();std::cout<<" + ";f2.print();std::cout<<" = ";res.print();std::cout<<"\n";res = f1 - f2;f1.print();std::cout<<" - ";f2.print();std::cout<<" = ";res.print();std::cout<<"\n";res = f1 * f2;f1.print();std::cout<<" * ";f2.print();std::cout<<" = ";res.print();std::cout<<"\n";res = f1 / f2;f1.print();std::cout<<" / ";f2.print();std::cout<<" = ";res.print();std::cout<<"\n";return 0;
}

C++实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。相关推荐

  1. sizeof()来求一个类的大小

    基本概念 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得 ...

  2. java程序 构建mycircle类_Java语言程序设计(十九)对象和类的应用实例

    1.我们定义一个Circle类并使用该类创建对象,我们创建三个圆对象,1.0,25和125,然后显示这三个圆的半径和面积,将第二个对象的半径改为100,然后显示它的新半径和面积.程序清单如下: pac ...

  3. DCMTK:OFStandard类中的double / ascii转换方法的测试代码

    DCMTK:OFStandard类中的double / ascii转换方法的测试代码 OFStandard类中的double / ascii转换方法的测试代码 OFStandard类中的double ...

  4. DCMTK:OFStandard类中的ASCII /双转换方法的测试代码

    DCMTK:OFStandard类中的ASCII /双转换方法的测试代码 OFStandard类中的ASCII /双转换方法的测试代码 OFStandard类中的ASCII /双转换方法的测试代码 # ...

  5. .设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象

    .设计一个Student类,该类中包括学生的姓名和成绩.创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象放入A ...

  6. 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。

    设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高.width和height的默认值都为1.该类包括矩形类的无参构造函数 ...

  7. 【高并发】一个工作了7年的朋友去面试竟然被Thread类虐的体无完肤

    前言 最近和一个工作了7年的朋友聊天,他跟我说起了他去XXX公司面试的情况,面试官的一个问题把他打懵了!竟然问他:你经常使用Thread类创建线程,那你看过Thread类的源码吗?Thread类创建线 ...

  8. 使用sizeof计算类的大小

    类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说. 不过有两点需要注意:1)当类中含有虚成员函数的时候,例如: class B { float a; public: vi ...

  9. sizeof计算类的大小

    1 sizeof一个空类 class A { };cout<<sizeof(A)<<endl;//1 注:class A是一个空类型,它的实例不包含任何信息,本来求sizeof ...

最新文章

  1. 框架和设计模式的区别
  2. Java线程之核心概念
  3. SysErrorMessage 函数和系统错误信息表
  4. 揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
  5. python做一个系统代码_python初学者,用python3实现基本的学生管理系统代码实例...
  6. 计算机软考笔记之《数据库基础》
  7. 经典算法——斐波那契数列
  8. ubuntu下有没有类似于imagewatch的软件_大家有没有什么好的app推荐下,学习的类似timing小众点的?...
  9. VS2008下的配置opencv
  10. 电信光猫 PT924 获取超级密码
  11. c语言学籍信息录入,C语言程序报告 学生学籍信息管理系统.doc
  12. ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问 解决方案
  13. 【转】2014阿里巴巴面试经历
  14. android极光推送问题,Android 极光推送问题
  15. 通过路由器SF上网设置方法.....
  16. proc report过程步
  17. scons构建mdk工程
  18. 02—测试用例内容包含、测试用例的设计点
  19. unity 关于使用Rigidbody的Addforce但不起作用的一些可能原因以及解决方法
  20. 可恶的动态代理!!!!我要消灭你

热门文章

  1. C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
  2. 七年级计算机考试知识点,七年级语文重点笔记 必考知识
  3. 正则表达式在IE7浏览器出现校验结果不正确
  4. 2018年11月总结,12月计划
  5. 用静态KML脚本在GoogleEarth上实现动态效果
  6. 开启docker的大门,docker基本使用方法
  7. _()---由此知度娘和google的冷暖
  8. 深入理解Java虚拟机(四)Eden、Survivor、老年代、GC日志
  9. dlp型3d打印机_DLP与LCD光固化3D打印技术的对比
  10. gdpr隐私保护_微信公众平台已发布GDPR隐私保护条例的新措施