C++实现分数的四则运算
代码如下,需要的自取,给个赞就好。
#include<iostream>
#include<stdlib.h>
#include<cstdio>
using namespace std;
struct Fraction{int up, down;
};
int gongYinshu(int data1, int data2){ //找到最大公约数int k=2;int gcd=1;while (k<=data1 && k<=data2){if(data1%k==0 && data2%k==0){gcd = k;}k++;}return gcd;
}Fraction reduction(Fraction data){ //分数的简化if(data.down<0){ //如果分母小于零,则将其转化在分子上data.up = -data.up;data.down = - data.down;}if(data.up == 0){ //因为分母不能为零,所以将其转化在分子上data.down = 1;}else{ //找出分子和分母的最大公约数,分子分母同时除以这个数,就可以简化分数int YinShu = gongYinshu(abs(data.up), abs(data.down));data.up = data.up / YinShu;data.down = data.down / YinShu;}return data;
}void showIt(Fraction data){ //展示分数Fraction result = reduction(data);cout<<result.up<<"/"<<result.down<<endl;
}void showAllData(Fraction *dataList,int N){ //展示所有分数cout<<"已有分数如下:"<<endl;for(int i=0;i<N;i++){cout<<"\t"<<i+1<<". ";showIt(dataList[i]);}
}Fraction addOfFraduction(Fraction data1, Fraction data2){ //分数的加法Fraction use, result;use.up = data1.up * data2.down + data2.up * data1.down; //计算分子use.down = data1.down * data2.down; //计算分母result = reduction(use);return result;
}Fraction minu(Fraction f1, Fraction f2){ //分数的减法Fraction result;result.up = f1.up*f2.down - f2.up * f1.down; result.down = f1.down * f2.down; return reduction(result); //返回简化以后的分数
}Fraction multi(Fraction data1, Fraction data2){ //分数的乘法Fraction result;result.up = reduction(data1).up * reduction(data2).up;result.down = reduction(data1).down * reduction(data2).down;return result;
}Fraction divide(Fraction data1, Fraction data2){ //分数的除法Fraction result;result.up = reduction(data1).up * reduction(data2).down;result.down = reduction(data1).down * reduction(data2).up;return result;
}void inputData(Fraction *dataList, int N){for(int i=0;i<N;i++){cout<<endl<<"请输入第"<<i+1<<"个分数的分子:";cin>>dataList[i].up;cout<<"请输入第"<<i<<"个分数的分母:";cin>>dataList[i].down;}showAllData(dataList,N);
}int main(){int b=1,choose;int N;cout<<"你想计算几个分数:";cin>>N;Fraction *dataList = new Fraction[N];Fraction show;int p1,p2;while(b){system("cls");cout<<"\t\t——————Cpp实现分数的四则运算——————"<<endl<<"\t\t|1.输入想要计算的分数\t|"<<endl<<"\t\t|2.分数的加法\t|"<<endl<<"\t\t|3.分数的减法\t|"<<endl<<"\t\t|4.分数的乘法\t|"<<endl<<"\t\t|5.分数的除法\t|"<<endl<<"\t\t|0.退出程序\t\t|"<<endl;cout<<"\t请选择以上功能:";cin>>choose;switch (choose){case 1: inputData(dataList, N); break;case 2: showAllData(dataList, N); cout<<endl<<"请选择数据序号相加:"; cin>>p1;cin>>p2; show = addOfFraduction(dataList[p1-1], dataList[p2-1]);cout<<"相加后得到:";showIt(show); break;case 3: showAllData(dataList, N);cout<<endl<<"请选择数据序号做差:"; cin>>p1;cin>>p2;show = minu(dataList[p1-1], dataList[p2-1]); cout<<"做差后得到:";showIt(show); break;case 4: showAllData(dataList, N);cout<<endl<<"请选择数据序号做乘法:"; cin>>p1;cin>>p2;show = multi(dataList[p1-1], dataList[p2-1]); cout<<"两分数相乘得到:";showIt(show); break;case 5: showAllData(dataList, N);cout<<endl<<"请选择数据序号做除法:"; cin>>p1;cin>>p2;show = divide(dataList[p1-1], dataList[p2-1]); cout<<"两分数相除得:";showIt(show); break;case 0: b=0; break;default:break;}if(choose != 0){cout<<endl<<"点击任意键继续!"<<endl;getchar();getchar();}}system("cls");free(dataList);
}
C++实现分数的四则运算相关推荐
- 《算法笔记》学习日记——5.2 最大公约数与最小公倍数5.3 分数的四则运算5.4 素数
目录 5.2 最大公约数与最小公倍数 问题 A: Least Common Multiple 小结 5.3 分数的四则运算 问题 A: 分数矩阵 小结 5.4 素数 问题 A: 素数 问题 B: Pr ...
- 分数的四则运算及化简(C语言实现)
下面这个程序使用C语言的结构体实现了分数的加减乘除四则运算,同时将结果最简化.这里为了简化,将输入值固定了,如果需要根据输入进行计算,将main函数内的相应部分稍作修改即可. #include < ...
- Java实现分数的四则运算
题目描述 使用Java实现分数的四则运算,每行输入一次运算,只考虑两个分数之间的运算. 输入示例 输入 1/3 \ 5/8 输出 8/15 输入 2/3 + 4/3 2 算法思路 获得 ...
- java有理数类的封装_第4章类与对象==有理数的类封装(分数的四则运算)
问题; 对分数进行四则运算,使结果仍然是分数 代码: Test.java public class Test { public static void main(String[]args){ Rati ...
- python分数约分_python分数的四则运算
适用于初学着看看,没有很深入的知识与语法,大神可以越过. 代码 class Arithmetic(object): def __init__(self, p, q): self.p = p self. ...
- 数学问题->分数的四则运算
问题 A: 分数矩阵 思路一: 这个思路是对的,不过题目中的数据太大超时了. 时间复杂度O(n2) #include<cstdio> #include<cmath> doubl ...
- 写一个能自动生成四则运算题目的软件,要求除了整数,还要支持正分数的四则运算。和同学们比较各自的程序功能、实现方法的异同。...
package Rational; import java.util.Random; import java.util.Scanner; public class szys { ...
- 用java有理数类包含加减乘除_用java具体代码实现分数(即有理数)四则运算
用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...
- 分数四则运算java_用java具体代码实现分数(即有理数)四则运算
用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...
最新文章
- 宣武区政务网教育网的改造
- DS博客作业08--课程总结
- 嵌入式Linux全攻略 ACE程序移植过程详细讲解
- VTK:几何对象之EllipticalCylinderDemo
- PJzhang:互联网是有国界
- dynamodb 基本操作
- MaxCompute 图计算用户手册(上)
- android 删除wifi文件在哪里设置,如何删除无线终端的无线配置文件
- 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替...
- CentOS系统根目录下各个目录存放的内容
- python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
- python去除停用词_如何从gensim中的文档中删除停用词?
- CoreOS部署及应用
- 流程工业MES管理系统有什么特点
- .net扫盲-网页对话框应用
- 玩大灾变出现“igxprd32显示驱动程序已经停止正常工作”解决方法
- 016画笔工具、铅笔工具、颜色替换工具和混合器画笔工具
- android+微信支付
- 计算机专业教师资格证教学设计,教师资格证教案
- Ubuntu16安装docker
热门文章
- 如何在html页面中左尖括号,想要在HTML中显示一个尖括号“
- java文件批量改名代码_[原创]JAVA版批量更名程序(附源码)(要求加分)
- Altium desiger10安装破解过程
- 支持DoH的DNS服务器,Win11 支持私密 DNS-over-HTTPS(DoH) 附启用教程
- ingest-attachment理解误区
- hadoop清理回收站
- 淘集集商家入驻?淘集集商家入驻的步骤?
- 腾讯云mysql服务cpu毛刺问题
- GPS手机射频的一些测试项目
- 搜狗输入法英文字母间隔大