使用c++实现带分数的运算
带分数的运算
- 一、前言
- 二、带分数的运算
- 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++实现带分数的运算相关推荐
- 使用c++设计矩形类
矩形类 一.前言 二.带分数的运算 1.头文件(Rectangle.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使 ...
- 加减法叫做什么运算_期中备考:数学运算定律、法则与顺序
很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...
- 蓝桥备赛第一周2021.1.11 递归 枚举 位运算
文章目录 递归实现指数型枚举 递归指数型枚举 方法1:肯定是2^n行,所以直接就是上一个动态m从0到n加一堆空行 方法2:以最新的值为n为结束,遇到为0的不输出,用完要恢复为0 递归实现排列型枚举 非 ...
- 加减法叫做什么运算_小学四则运算基础知识,赶快给孩子存下吧!
计算能力是小学数学学习的基础.期末考试快来了,今天小猿老师为大家分享小学阶段关于四则运算的基础知识. 趁着期末考试前,帮孩子们查漏补缺,提高计算能力,争取期末表现得更好哦~家长们收藏吧. 运算定律 加 ...
- 分数怎么化成带分数_人教版五年级下册第4单元带分数及把假分数化成整数或带分数教学视频+知识点...
|点击题目下方蓝字一键关注 小学生知识库| [教学视频]分数的分类与互化[知识点] 带分数的意义和特征: 像-这样由整数和真分数合成的数叫做带分数. 假分数化成整数或带分数的方法是什么? ①当假分数的 ...
- # 异运算_小学数学运算三要点:定律、法则与顺序(解析)
很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...
- 十六进制除法运算法则_苏教版数学七年级上册 微课视频 2.6 有理数的乘法与除法(1)...
第一章<数学与我们同行>视频讲解 同步练习 2.1 <正数与负数> 2.2 有理数与无理数 2.3 数轴 2.4 绝对值与相反数(1) 2.4 绝对值与相反数(2) 2.5 ...
- # 异运算_人教版六年级数学下册第29课数的运算(P7680)图文视频辅导
更多精彩,扫码关注微信号:jyse0-12公众号:中小学师生 精品推荐: 小学语文 小学数学小学英语小学道德小学音乐小学美术小学科学 小学各科目教案课件 六年级数学下册 图文微课讲解目录 六年级数学下 ...
- 减法运算的借位标志cf_数学|有理数运算法则及题型汇总
宇宙之大,粒子之微,火箭之速,化工之巧,地球之变,生物之谜,日用之繁,无处不用数学. -- 华罗庚 在初中数学中,有理数是在小学原有的数的基础上进行了概念的拓展. 在有理数的学习过程中,很多学生还停留 ...
最新文章
- 养猪场招研究生年薪18万起?!你怎么看?
- Web端a标签跳转地图等链接(收藏)
- 用MediaInfo获取音视频信息
- 荣耀play4 pro怎么升级鸿蒙系统,华为鸿蒙系统手机型号有哪些
- hbase/thrift/go连接失败
- rpa机器人平台_RPA在财务领域的三大应用场景解析
- 的称重在哪里_如何申请条形码,条形码在哪里申请办理
- linux安装mysql 5.7_linux安装mysql5.7.24
- 三菱Q系列常用注意事项
- Ultra Edit中编辑并一键运行Ansys命令流
- 智慧林草信息化解决方案(森林防火应急指挥系统)
- java工作流引擎(j-roadflow)快速入门教程
- linux 主机管理平台,Linux虚拟主机管理系统directadmin使用中文教程
- hp笔记本win10无法关闭飞行模式
- 买社保有哪些好处?社保好还是商业保险好?社保和商业保险的区别?
- PCL之kd-tree详解
- java五子棋AI算法人机对战(春物彩羽版可下载试玩PC端)
- KEEP TURE
- history查看历史命令,并显示运行时间
- 用CSS和JS打造一个简单的图片编辑器
热门文章
- 怎么给Typora的代码块设置默认语言?
- WannaCry是什么 如何发起攻击
- linux SSD 寿命
- 学习Masonry框架 - iOS
- ListNameValuePair params = new ArrayListNameValuePair();
- Windows下程序向Linux下移植实践
- npm 报错 ERR Cannot read properties of null reading ‘package npm ERR A complete log of this run can
- 【Python 针对 excel 数据处理案例】
- leetcode|一道算法题错失谷歌offer
- Python3导入scrapy报错1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-831gxniz\Twisted\