代码如下,需要的自取,给个赞就好。

#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++实现分数的四则运算相关推荐

  1. 《算法笔记》学习日记——5.2 最大公约数与最小公倍数5.3 分数的四则运算5.4 素数

    目录 5.2 最大公约数与最小公倍数 问题 A: Least Common Multiple 小结 5.3 分数的四则运算 问题 A: 分数矩阵 小结 5.4 素数 问题 A: 素数 问题 B: Pr ...

  2. 分数的四则运算及化简(C语言实现)

    下面这个程序使用C语言的结构体实现了分数的加减乘除四则运算,同时将结果最简化.这里为了简化,将输入值固定了,如果需要根据输入进行计算,将main函数内的相应部分稍作修改即可. #include < ...

  3. Java实现分数的四则运算

    题目描述  使用Java实现分数的四则运算,每行输入一次运算,只考虑两个分数之间的运算. 输入示例  输入  1/3 \ 5/8  输出  8/15  输入  2/3 + 4/3  2 算法思路 获得 ...

  4. java有理数类的封装_第4章类与对象==有理数的类封装(分数的四则运算)

    问题; 对分数进行四则运算,使结果仍然是分数 代码: Test.java public class Test { public static void main(String[]args){ Rati ...

  5. python分数约分_python分数的四则运算

    适用于初学着看看,没有很深入的知识与语法,大神可以越过. 代码 class Arithmetic(object): def __init__(self, p, q): self.p = p self. ...

  6. 数学问题->分数的四则运算

    问题 A: 分数矩阵 思路一: 这个思路是对的,不过题目中的数据太大超时了. 时间复杂度O(n2) #include<cstdio> #include<cmath> doubl ...

  7. 写一个能自动生成四则运算题目的软件,要求除了整数,还要支持正分数的四则运算。和同学们比较各自的程序功能、实现方法的异同。...

    package Rational; import java.util.Random; import java.util.Scanner; public class szys {             ...

  8. 用java有理数类包含加减乘除_用java具体代码实现分数(即有理数)四则运算

    用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...

  9. 分数四则运算java_用java具体代码实现分数(即有理数)四则运算

    用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...

最新文章

  1. 宣武区政务网教育网的改造
  2. DS博客作业08--课程总结
  3. 嵌入式Linux全攻略 ACE程序移植过程详细讲解
  4. VTK:几何对象之EllipticalCylinderDemo
  5. PJzhang:互联网是有国界
  6. dynamodb 基本操作
  7. MaxCompute 图计算用户手册(上)
  8. android 删除wifi文件在哪里设置,如何删除无线终端的无线配置文件
  9. 正则双重过滤 /// splitKey1 第一个正则式匹配 /// splitKey2 匹配结果中再次匹配进行替...
  10. CentOS系统根目录下各个目录存放的内容
  11. python统计及格不及格人数_Python一次输入多个值(列出存储信息),python,一次性,数值,列表...
  12. python去除停用词_如何从gensim中的文档中删除停用词?
  13. CoreOS部署及应用
  14. 流程工业MES管理系统有什么特点
  15. .net扫盲-网页对话框应用
  16. 玩大灾变出现“igxprd32显示驱动程序已经停止正常工作”解决方法
  17. 016画笔工具、铅笔工具、颜色替换工具和混合器画笔工具
  18. android+微信支付
  19. 计算机专业教师资格证教学设计,教师资格证教案
  20. Ubuntu16安装docker

热门文章

  1. 如何在html页面中左尖括号,想要在HTML中显示一个尖括号“
  2. java文件批量改名代码_[原创]JAVA版批量更名程序(附源码)(要求加分)
  3. Altium desiger10安装破解过程
  4. 支持DoH的DNS服务器,Win11 支持私密 DNS-over-HTTPS(DoH) 附启用教程
  5. ingest-attachment理解误区
  6. hadoop清理回收站
  7. 淘集集商家入驻?淘集集商家入驻的步骤?
  8. 腾讯云mysql服务cpu毛刺问题
  9. GPS手机射频的一些测试项目
  10. 搜狗输入法英文字母间隔大