C++实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。
//实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。
#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++实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。相关推荐
- sizeof()来求一个类的大小
基本概念 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得 ...
- java程序 构建mycircle类_Java语言程序设计(十九)对象和类的应用实例
1.我们定义一个Circle类并使用该类创建对象,我们创建三个圆对象,1.0,25和125,然后显示这三个圆的半径和面积,将第二个对象的半径改为100,然后显示它的新半径和面积.程序清单如下: pac ...
- DCMTK:OFStandard类中的double / ascii转换方法的测试代码
DCMTK:OFStandard类中的double / ascii转换方法的测试代码 OFStandard类中的double / ascii转换方法的测试代码 OFStandard类中的double ...
- DCMTK:OFStandard类中的ASCII /双转换方法的测试代码
DCMTK:OFStandard类中的ASCII /双转换方法的测试代码 OFStandard类中的ASCII /双转换方法的测试代码 OFStandard类中的ASCII /双转换方法的测试代码 # ...
- .设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象
.设计一个Student类,该类中包括学生的姓名和成绩.创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象放入A ...
- 设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。
设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高.width和height的默认值都为1.该类包括矩形类的无参构造函数 ...
- 【高并发】一个工作了7年的朋友去面试竟然被Thread类虐的体无完肤
前言 最近和一个工作了7年的朋友聊天,他跟我说起了他去XXX公司面试的情况,面试官的一个问题把他打懵了!竟然问他:你经常使用Thread类创建线程,那你看过Thread类的源码吗?Thread类创建线 ...
- 使用sizeof计算类的大小
类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说. 不过有两点需要注意:1)当类中含有虚成员函数的时候,例如: class B { float a; public: vi ...
- sizeof计算类的大小
1 sizeof一个空类 class A { };cout<<sizeof(A)<<endl;//1 注:class A是一个空类型,它的实例不包含任何信息,本来求sizeof ...
最新文章
- 框架和设计模式的区别
- Java线程之核心概念
- SysErrorMessage 函数和系统错误信息表
- 揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
- python做一个系统代码_python初学者,用python3实现基本的学生管理系统代码实例...
- 计算机软考笔记之《数据库基础》
- 经典算法——斐波那契数列
- ubuntu下有没有类似于imagewatch的软件_大家有没有什么好的app推荐下,学习的类似timing小众点的?...
- VS2008下的配置opencv
- 电信光猫 PT924 获取超级密码
- c语言学籍信息录入,C语言程序报告 学生学籍信息管理系统.doc
- ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问 解决方案
- 【转】2014阿里巴巴面试经历
- android极光推送问题,Android 极光推送问题
- 通过路由器SF上网设置方法.....
- proc report过程步
- scons构建mdk工程
- 02—测试用例内容包含、测试用例的设计点
- unity 关于使用Rigidbody的Addforce但不起作用的一些可能原因以及解决方法
- 可恶的动态代理!!!!我要消灭你
热门文章
- C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
- 七年级计算机考试知识点,七年级语文重点笔记 必考知识
- 正则表达式在IE7浏览器出现校验结果不正确
- 2018年11月总结,12月计划
- 用静态KML脚本在GoogleEarth上实现动态效果
- 开启docker的大门,docker基本使用方法
- _()---由此知度娘和google的冷暖
- 深入理解Java虚拟机(四)Eden、Survivor、老年代、GC日志
- dlp型3d打印机_DLP与LCD光固化3D打印技术的对比
- gdpr隐私保护_微信公众平台已发布GDPR隐私保护条例的新措施