找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24685|回复: 4

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

[复制链接]
发表于 2012-6-14 20:55:40 | 显示全部楼层 |阅读模式
如何做一个能简化比的批处理?能贴上代码吗?
要求:
第一步输入比的前项
第二步输入比的后项
(第一步第二步可以打分数那就更好了,如3/4)
第三步自动转化为最简整数比。
麻烦高手们贴上代码帮小弟一把吧。
发表于 2012-6-14 21:57:31 | 显示全部楼层
p的运算能力太弱,碰到这样的问题有点纠结
发表于 2012-6-14 22:50:38 | 显示全部楼层
本帖最后由 CrLf 于 2012-6-14 23:26 编辑

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

浮点运算一般是用类似这样的关系式模拟的:
(a*1000)*(b*1000)=c/1000
所以支持的数值范围不太大
发表于 2012-6-14 23:19:18 | 显示全部楼层
LZ说的是将分数化简为最简分数吧?
主要就是找最大公约数,记得dos联盟有很多这方面的讨论,当然我们论坛也有。
发表于 2012-6-15 00:39:34 | 显示全部楼层
本帖最后由 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. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 04:56 , Processed in 0.017871 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表