Board logo

标题: [数值计算] 如何做一个可以简化比的批处理? [打印本页]

作者: 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来应该还是比较方便:
  1. BEGIN{FS="/";printf "input:"}
  2. {
  3. ok=0
  4. if($1 !~ /[0-9]+/ || $2 !~ /[0-9]+/)
  5. {print "illegal input!";printf "input:";next}
  6. for(i=($1<$2?$1:$2);i>1;i--)
  7. if($1%i==0 && $2%i==0)
  8. {ok=1;printf("result:%d/%d\n",$1/i,$2/i);break}
  9. if(ok==0) printf("result:%d/%d\n",$1,$2)
  10. printf "input:"
  11. }
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2