[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 如何做一个可以简化比的批处理?

如何做一个能简化比的批处理?能贴上代码吗?
要求:
第一步输入比的前项
第二步输入比的后项
(第一步第二步可以打分数那就更好了,如3/4)
第三步自动转化为最简整数比。
麻烦高手们贴上代码帮小弟一把吧。

p的运算能力太弱,碰到这样的问题有点纠结

TOP

本帖最后由 CrLf 于 2012-6-14 23:26 编辑

没明白一二步是什么输入?如何变为 3/4 的呢?

浮点运算一般是用类似这样的关系式模拟的:
(a*1000)*(b*1000)=c/1000
所以支持的数值范围不太大

TOP

LZ说的是将分数化简为最简分数吧?
主要就是找最大公约数,记得dos联盟有很多这方面的讨论,当然我们论坛也有。

TOP

本帖最后由 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. }
复制代码
看得多说得多,远比不上写得多。

TOP

返回列表