算法笔记-分数的表示和化简
2022/1/16 17:03:51
本文主要是介绍算法笔记-分数的表示和化简,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、使用结构体来存储分数的分子和分母
2、对分数指定规则
1、使分母为非负数,如果分数为负,则令分子为负数即可
2、如果分数为零,则规定分子为零,分母为1
3、分子和分母没有除1以外的公约数
3、分数的化简
1、若分母为负数,则令分子和分母都变为相反数
2、若分子为零,则令分母为1
3、约分,求出分子绝对值与分母绝对值的最大公约数,然后令分子分母同时除以公约数
#include<iostream> using namespace std; struct Fraction{ int up,down; }; int gcd(int a,int b) { if(b==0)return a; else return gcd(b,a%b); } Fraction reduction(Fraction result) { if(result.down<0){//分母为负数,令分子分母都变为相反数 result.up=-result.up; result.down=-result.down; } if(result.up==0)//若分子为0 { result.down=1;//令分母为1 } else{//若分母不为0,则进行约分 int d=gcd(abs(result.up),abs(result.down));//分子分母的最大公约数 result.up/=d;//约去最大公约数 result.down/=d; } return result; } //分数的输出 void showFraction(Fraction r) { //原则一:先进行化简 r = reduction(r); //原则二:如果是整数 if (r.down == 1)//分母为0 printf("%d", r.up);//直接输出分子 //原则三:如果是假分数 else if (abs(r.up) > abs(r.down))//分子大于分母 { int a = r.up / r.down; r.up = abs(r.up) % r.down;//注意这里的绝对值 printf("%d %d/%d\n", a, r.up, r.down); } else{ printf("%d/%d", r.up,r.down);//直接输出 } } int main() { Fraction result; Fraction f; f.up = 7; f.down = 6; result = reduction(f); showFraction(result); return 0; }
这篇关于算法笔记-分数的表示和化简的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南