C++上机题,题目如下:
设计一个有理数类,要求如下:
有理数有整数类型的分子、分母组成,通过运算符重载,完成有理数的加、减、乘、除运算,运算结果要求为最简分数,即分子分母没有公约数。在主程序中测试类与方法。

不多废话,完整代码我已经贴出来了,注释也很详细,唯一要注意的就是分母不能为0和第二个有理数的分子也不能为0(因为除数不能为0)。希望对初学C++,碰巧有类似练习的童鞋有帮助@_@

#include <iostream>
#include <cmath>
//numerator分子  denominator分母
using namespace std;
class Rational {
public:Rational(int n=0,int d=1):num(n),den(d) {} //有参构造函数friend Rational operator+(const Rational &r1,const Rational &r2);//相加friend Rational operator-(const Rational &r1,const Rational &r2);//相减friend Rational operator/(const Rational &r1,const Rational &r2);//相除friend Rational operator*(const Rational &r1,const Rational &r2);//相乘void simplify();//对有理数进行化简void display();  //显示结果
private :double num;double den;};
Rational operator+(const Rational &r1,const Rational &r2) {Rational r;r.num = r1.den*r2.num+r1.num*r2.den;//相加的分子等于r1分母和r2分子相乘,r1分子和r2分母相乘之和r.den = r1.den*r2.den;//分母等于两个有理数分母的相乘r.simplify();//调用simplify对结果进行化简return r;//将结果返回
}
Rational operator-(const Rational &r1,const Rational &r2) {Rational r;r.num = r1.num*r2.den-r1.den*r2.num;//相加的分子等于r1分母和r2分子相乘,r1分子和r2分母相乘之差r.den = r1.den*r2.den;//分母等于两个有理数分母的相乘r.simplify();return r;
}
Rational operator/(const Rational &r1,const Rational &r2) {Rational r;if(r1.den==0||r2.den==0||r2.num==0) {cout<<"分母或者除数不能为0"<<endl;} else if(r1.num==0) {cout<<"0/0"<<endl;} else {r.num = r1.num*r2.den;//相除的分子等于r1分子和r2分母相乘r.den = r1.den*r2.num;//分母等于两个r1分母和r2分子相乘r.simplify();return r;}
}
Rational operator*(const Rational &r1,const Rational &r2) {Rational r;if(r1.den==0||r2.den==0) {cout<<"分母不能为0"<<endl;} else if(r1.num==0||r2.num==0) {cout<<"0/0"<<endl;} else {r.num = r1.num*r2.den;//分子等于r1分子和r2分母相乘r.den = r1.den*r2.num;//分母等于两个r1分母和r2分子相乘r.simplify();return r;}
}
void Rational::simplify() {int i,j,temp;i=abs(den);j=abs(num);//如果i对j取余不为0,辗转相除法求最大公约数while(temp=i%j) {i=j;j=temp;}den/=j;num/=j;if(den<0) {den=-den;num=-num;}
}
void Rational::display() {if(num==0||den==0) {} else {cout<<num<<"/"<<den<<endl;}
}
int main() {Rational r;Rational r1(1,3),r2(0,5);r=r1+r2;r.display();r=r1-r2;r.display();r=r1*r2;r.display();r=r1/r2;r.display();return 0;
}

C++实现有理数类加减乘除相关推荐

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

    //实现一个有理数类,包括大小比较,有理数的加减乘除.测试你的类. #include <iostream> #include <stdlib.h>class Rational ...

  2. 有理数类的定义与实现

    一个有理数是由一个分子和分母组成的a/b形式的数.我们知道一般程序语言里已经定义了整形类,浮点型,字符型,但并不支持有理数型.这对于分数的精确计算如1/3=0.33333....不能用double 或 ...

  3. 蓝桥杯乘法运算java,第四届蓝桥杯Java B——有理数类

    有理数就是可以表示为两个整数的比值的数字.一般情况下,我们用近似的小数表示.但有些时候,不允许出现误差,必须用两个整数来表示一个有理数. 这时,我们可以建立一个"有理数类",下面的 ...

  4. 蓝桥杯JAVA省赛2013-----B------5(有理数类)

    五.有理数类 [答案]:Rational(this.rax.rb + this.rbx.ra, this.rb*x.rb) public class Test01 {static class Rati ...

  5. java有理数类的封装_java实验报告有理数的类封装.doc

    java实验报告有理数的类封装 华中科技大学文华学院 <Java程序设计>实验报告 实验三:有理数的类封装 专业班级: 通信工程2008级1班 姓名: 学号: 时间: 实验三:有理数的类封 ...

  6. (有理数类 )创建一个名为Rational的类,进行分数运算。

    原题目是 (有理数类 )创建一个名为Rational的类,进行分数运算.编写一个程序测试这个类. 用整数变量表示类的private数据:numerator( 分子)和denominator(分母).提 ...

  7. 【每日蓝桥】5、一三年省赛Java组真题“有理数类”

    你好呀,我是灰小猿,一个超会写bug的程序猿! 欢迎大家关注我的专栏"每日蓝桥",该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想.数据结构等内容, ...

  8. C++面向对象程序设计实验题:有理数类(分数类)设计

    C++实验题:有理数类(分数类)设计 问题描述: 根据main测试函数设计有理数类CRational,数据成员由分子.分母组成(都是整型,应表示成最简形式),完成分数显示(如用户输入的分子是4,分母是 ...

  9. 以下为一个有理数类,一个有理数由分子和分母组成,目前定义了一个输出函数 十七、编写一个加法函数,可以接收另一个有理数,与自身的值相加 十八、编写一个乘法函数,同理接收另一个有理数,与自身的值相乘

    以下为一个有理数类,一个有理数由分子和分母组成,目前定义了一个输出函数 十七.编写一个加法函数,可以接收另一个有理数,与自身的值相加 十八.编写一个乘法函数,同理接收另一个有理数,与自身的值相乘 十九 ...

最新文章

  1. Google和网易有道合作开课了
  2. 详细介绍Vue的数据响应式
  3. linux环境对apk文件写入数据,Linux下7zip命令apk中插入文件标识渠道批量打包
  4. 从《芈月传》看热门IP在互联网视频行业的“前世今生”
  5. 【简便解法】1068 万绿丛中一点红 (20分)
  6. php拼接xml特殊字符不显示,使用PHP的XML特殊字符
  7. 34营销的三要素:真实诚信、诱饵引入、合理宣传
  8. 最安全的浏览器?黑客大赛微软Edge被破解5次夺下“冠军”
  9. 数据分析报告应该包含的内容
  10. android shell强制删除文件夹_【代码合集】VBA操作文件夹代码合集
  11. 【超图+CESIUM】【基础API使用示例】48、超图|CESIUM - 漫游飞行效果
  12. 奥城大学计算机专业,美国研究生双录取的大学及可提供学位详情
  13. MarkDown 编辑器字体改颜色大小等常用操作
  14. HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器 1
  15. 自制拖把机器人_懒出新境界:可以自己洗拖布的机器人
  16. 要不要启用苹果wapi_苹果“史上最强”系统ios13来了,要不要升级?
  17. poi 替换word里的\n 变成 换行
  18. “第二期政府CIO论坛”顺利举行
  19. android+饭否+开源,fanfou(饭否) android客户端 代码学习一
  20. OSChina 周四乱弹 ——心有鱼,而力不足

热门文章

  1. 解决H5播放视频黑屏只有声音没有图像的问题,Java调用ffmpeg转码成h264的mp4格式
  2. 【Nginx】nginx代理视频流hls地址
  3. Momenta Mpilot Parking 自主泊车(APA/AVP)方案
  4. 种一棵树最好的时间,是十年前,其次是现在
  5. 计算机毕业设计之微信小程序的快递取件及上门服务系统的论文
  6. vivado的使用技巧整理
  7. 办公族久坐对颈椎不好,快快试试这个体操吧
  8. 人工神经网络是符号主义,神经网络的符号表达式
  9. 如何用SPSS进行数据分析?
  10. MyEclipse中maven的下载、配置及安装