带分数的运算

  • 一、前言
  • 二、带分数的运算
    • 1.头文件(Rational.h)
    • 2.源文件(实现函数)
    • 3.源文件(测试函数)
    • 4.运行截图
  • 三、总结

一、前言

为了更深入的学习c++,小编将带领大家一起使用c++实现带分数的运算,本文就介绍了一些相关的代码。

二、带分数的运算

Rational(有理数类),执行带分数的运算,编写测试代码。用整数表示类的private数据(分子,分母),结果以最简分数形式保存。

1.头文件(Rational.h)

#include<math.h>
using namespace std;//带分数类
class Rational
{private:int integer;//带分数的整数部分int numerator;//分子int denominator;//分母
public://含两个参数的构造函数Rational(int numerator,int denominator);//不含参数的构造函数Rational();// 最大公约数:辗转相处法int gcd(int a, int b);// 最小公倍数:两数乘积除以最大公约数int lcm(int a, int b);//化简函数,以最简形式存放void Simplify();//分数的加法void Addition(Rational&, Rational&);//分数的减法void Subtraction(Rational&, Rational&);//分数的除法void Disvision(Rational&, Rational&);//分数的乘法void Multiplication(Rational&, Rational&);//输入函数void Set();//输出函数void Show();
};

2.源文件(实现函数)

#include"Rational.h"
#include<math.h>
#include <iostream>
using namespace std;/*
本程序包括:带分数的加减乘除,以及将其化为最简形式的代码
*///含两个参数的构造函数
Rational::Rational(int numerator,int denominator)
{this->numerator = numerator;this->denominator = denominator;Simplify();
}
//不含参数的构造函数
Rational::Rational()
{integer = 0;numerator = 0;denominator = 1;
}
// 最大公约数:辗转相处法
int Rational::gcd(int a, int b)
{return b == 0 ? a : gcd(b, a % b);
}
// 最小公倍数:两数乘积除以最大公约数
int Rational::lcm(int a, int b)
{return a / gcd(a, b) * b;
}
//化简函数,以最简形式存放
void Rational::Simplify()
{if (integer < 0 && numerator > 0 && denominator > 0) {integer++;numerator -= denominator;}//分子大于分母if (numerator > denominator) {integer = integer + numerator / denominator;//计算整数部分numerator = numerator % denominator;}//分子等于分母else if (numerator == denominator){integer = 1;//整数部分为1numerator = 0; denominator = 1;}//分子小于分母else if (numerator != 0 && numerator < denominator && integer == 0){integer = 0;//整数部分为0}// 分子为0,则分母为1if (numerator == 0)denominator = 1;// 如果分母为负数,则分子分母变号if (denominator < 0){numerator = -numerator;denominator = -denominator;}// 约分: 分子分母同时除以最大公约数int x = gcd(abs(numerator), abs(denominator));numerator /= x;denominator /= x;
}
//分数的加法
void Rational::Addition(Rational& r1, Rational& r2)
{//整数部分直接相加integer = r1.integer + r2.integer;// 对分子进行检测if (r1.numerator == 0 && r2.numerator == 0){numerator = 0;denominator = 1;}else {// 分子,分母分别计算numerator = r1.numerator * r2.denominator + r2.numerator * r1.denominator;denominator = r1.denominator * r2.denominator;// 化简Simplify();}
}
//分数的减法
void Rational::Subtraction(Rational& r1, Rational& r2)
{//整数部分直接相减integer = r1.integer - r2.integer;// 对分子进行检测if (r1.numerator == 0 && r2.numerator == 0){numerator = 0;denominator = 1;}else {// 分子,分母分别计算numerator = r1.numerator * r2.denominator - r2.numerator * r1.denominator;denominator = r1.denominator * r2.denominator;if (numerator < 0 && integer > 0){integer--;numerator += denominator;}// 化简,返回Simplify();}
}
//分数的除法
void Rational::Disvision(Rational& r1, Rational& r2)
{if (r1.numerator == 0 && r2.numerator == 0)//若r1、r2的分子皆为0,直接计算整数部分即可{numerator = r1.integer;denominator = r2.integer;Simplify();}else{int j, k;j = r1.integer * r1.denominator + r1.numerator;k = r2.integer * r2.denominator + r2.numerator;numerator = j * r2.denominator;denominator = r1.denominator * k;if (numerator < 0 && integer > 0){integer--;numerator += denominator;}Simplify();//化简}
}
//分数的乘法
void Rational::Multiplication(Rational& r1, Rational& r2)
{if (r1.numerator == 0 && r2.numerator == 0) //若r1、r2的分子皆为0,直接计算整数部分即可{numerator = 0;denominator = 1;integer = r1.integer * r2.integer;Simplify();//化简}else {int j, k;j = r1.integer * r1.denominator + r1.numerator;k = r2.integer * r2.denominator + r2.numerator;numerator = j * k;denominator = r1.denominator * r2.denominator;Simplify();//化简}
}
//输入函数
void Rational::Set()
{cout << "请依次输入分子和分母!谢谢!" << endl;cin >> numerator >> denominator;if (denominator == 0) {cout << "分母不能为0!请重新输入分子和分母!" << endl;cin >> numerator >> denominator;}Simplify();cout << "输入成功!" << endl;
}
//输出函数
void Rational::Show()
{cout << "整数部分:" << integer << endl << "分数部分:" << numerator << "/" << denominator << endl;
}

3.源文件(测试函数)

#include"Rational.h"
#include<math.h>
#include <iostream>
using namespace std;//测试函数
int main()
{Rational r,j ,k ,l ,r1, r2;//定义带分数//输入分数(自动化简)r1.Set();r2.Set();//输出此时的分数r1.Show();r2.Show();//计算r1 + r2并输出化简后结果cout << "r1 + r2" << endl;r.Addition(r1, r2);r.Show();//计算r1 - r2并输出化简后结果cout << "r1 - r2" << endl;j.Subtraction(r1, r2);j.Show();//计算r1 / r2并输出化简后结果cout << "r1 / r2" << endl;k.Disvision(r1, r2);k.Show();//计算r1 * r2并输出化简后结果cout << "r1 * r2" << endl;l.Multiplication(r1,r2);l.Show();return 0;
}

4.运行截图

三、总结

以上就是今天要讲的内容,本文仅仅简单介绍了带分数类的设计,代码仅供大家参考,感谢!

使用c++实现带分数的运算相关推荐

  1. 使用c++设计矩形类

    矩形类 一.前言 二.带分数的运算 1.头文件(Rectangle.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使 ...

  2. 加减法叫做什么运算_期中备考:数学运算定律、法则与顺序

    很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...

  3. 蓝桥备赛第一周2021.1.11 递归 枚举 位运算

    文章目录 递归实现指数型枚举 递归指数型枚举 方法1:肯定是2^n行,所以直接就是上一个动态m从0到n加一堆空行 方法2:以最新的值为n为结束,遇到为0的不输出,用完要恢复为0 递归实现排列型枚举 非 ...

  4. 加减法叫做什么运算_小学四则运算基础知识,赶快给孩子存下吧!

    计算能力是小学数学学习的基础.期末考试快来了,今天小猿老师为大家分享小学阶段关于四则运算的基础知识. 趁着期末考试前,帮孩子们查漏补缺,提高计算能力,争取期末表现得更好哦~家长们收藏吧. 运算定律 加 ...

  5. 分数怎么化成带分数_人教版五年级下册第4单元带分数及把假分数化成整数或带分数教学视频+知识点...

    |点击题目下方蓝字一键关注 小学生知识库| [教学视频]分数的分类与互化[知识点] 带分数的意义和特征: 像-这样由整数和真分数合成的数叫做带分数. 假分数化成整数或带分数的方法是什么? ①当假分数的 ...

  6. # 异运算_小学数学运算三要点:定律、法则与顺序(解析)

    很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...

  7. 十六进制除法运算法则_苏教版数学七年级上册 微课视频 2.6 有理数的乘法与除法(1)...

    第一章<数学与我们同行>视频讲解 同步练习 2.1 <正数与负数> 2.2 有理数与无理数 2.3 数轴 2.4 绝对值与相反数(1) 2.4  绝对值与相反数(2) 2.5 ...

  8. # 异运算_人教版六年级数学下册第29课数的运算(P7680)图文视频辅导

    更多精彩,扫码关注微信号:jyse0-12公众号:中小学师生 精品推荐: 小学语文 小学数学小学英语小学道德小学音乐小学美术小学科学 小学各科目教案课件 六年级数学下册 图文微课讲解目录 六年级数学下 ...

  9. 减法运算的借位标志cf_数学|有理数运算法则及题型汇总

    宇宙之大,粒子之微,火箭之速,化工之巧,地球之变,生物之谜,日用之繁,无处不用数学. -- 华罗庚 在初中数学中,有理数是在小学原有的数的基础上进行了概念的拓展. 在有理数的学习过程中,很多学生还停留 ...

最新文章

  1. 养猪场招研究生年薪18万起?!你怎么看?
  2. Web端a标签跳转地图等链接(收藏)
  3. 用MediaInfo获取音视频信息
  4. 荣耀play4 pro怎么升级鸿蒙系统,华为鸿蒙系统手机型号有哪些
  5. hbase/thrift/go连接失败
  6. rpa机器人平台_RPA在财务领域的三大应用场景解析
  7. 的称重在哪里_如何申请条形码,条形码在哪里申请办理
  8. linux安装mysql 5.7_linux安装mysql5.7.24
  9. 三菱Q系列常用注意事项
  10. Ultra Edit中编辑并一键运行Ansys命令流
  11. 智慧林草信息化解决方案(森林防火应急指挥系统)
  12. java工作流引擎(j-roadflow)快速入门教程
  13. linux 主机管理平台,Linux虚拟主机管理系统directadmin使用中文教程
  14. hp笔记本win10无法关闭飞行模式
  15. 买社保有哪些好处?社保好还是商业保险好?社保和商业保险的区别?
  16. PCL之kd-tree详解
  17. java五子棋AI算法人机对战(春物彩羽版可下载试玩PC端)
  18. KEEP TURE
  19. history查看历史命令,并显示运行时间
  20. 用CSS和JS打造一个简单的图片编辑器

热门文章

  1. 怎么给Typora的代码块设置默认语言?
  2. WannaCry是什么 如何发起攻击
  3. linux SSD 寿命
  4. 学习Masonry框架 - iOS
  5. ListNameValuePair params = new ArrayListNameValuePair();
  6. Windows下程序向Linux下移植实践
  7. npm 报错 ERR Cannot read properties of null reading ‘package npm ERR A complete log of this run can
  8. 【Python 针对 excel 数据处理案例】
  9. leetcode|一道算法题错失谷歌offer
  10. Python3导入scrapy报错1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-831gxniz\Twisted\