标题: [数值计算] 如何做一个可以简化比的批处理? [打印本页]
作者: 331252240 时间: 2012-6-14 20:55 标题: 如何做一个可以简化比的批处理?
如何做一个能简化比的批处理?能贴上代码吗?
要求:
第一步输入比的前项
第二步输入比的后项
(第一步第二步可以打分数那就更好了,如3/4)
第三步自动转化为最简整数比。
麻烦高手们贴上代码帮小弟一把吧。
作者: yangfengoo 时间: 2012-6-14 21:57
p的运算能力太弱,碰到这样的问题有点纠结
作者: CrLf 时间: 2012-6-14 22:50
本帖最后由 CrLf 于 2012-6-14 23:26 编辑
没明白一二步是什么输入?如何变为 3/4 的呢?
浮点运算一般是用类似这样的关系式模拟的:
(a*1000)*(b*1000)=c/1000
所以支持的数值范围不太大
作者: powerbat 时间: 2012-6-14 23:19
LZ说的是将分数化简为最简分数吧?
主要就是找最大公约数,记得dos联盟有很多这方面的讨论,当然我们论坛也有。
作者: weichenxiehou 时间: 2012-6-15 00:39
本帖最后由 weichenxiehou 于 2012-6-15 00:47 编辑
用gawk来应该还是比较方便:- BEGIN{FS="/";printf "input:"}
- {
- ok=0
- if($1 !~ /[0-9]+/ || $2 !~ /[0-9]+/)
- {print "illegal input!";printf "input:";next}
- for(i=($1<$2?$1:$2);i>1;i--)
- if($1%i==0 && $2%i==0)
- {ok=1;printf("result:%d/%d\n",$1/i,$2/i);break}
- if(ok==0) printf("result:%d/%d\n",$1,$2)
- printf "input:"
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |