Board logo

标题: [数值计算] [分享]批处理对分数进行约分计算 [打印本页]

作者: batman    时间: 2009-7-31 11:05     标题: [分享]批处理对分数进行约分计算

&&由于很多原因,本人很久没有在论坛发过贴了,今天在群上和八字讨论了一下批对分数的计算,于是写下下面这个对分数进行约分的小批:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p a=请输入分数的分子:
  3. set /p b=请输入分数的分母:
  4. if %a% leq %b% (set /a c=a) else (set /a c=b)
  5. cls&echo 原分数为:%a%^/%b%
  6. for /l %%a in (%c%,-1,2) do (
  7.     set /a x=!a! %% %%a,y=!b! %% %%a
  8.     if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a
  9. )
  10. echo 约分后为:%a%^/%b%
  11. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-7-31 11:27 编辑 ]
作者: phanphan    时间: 2010-6-8 13:33

小白提问:
1. set /a x=!a!  %%  %%a,y=!b!  %%  %%a 中,中间的那对%%是起什么作用啊?
2.  if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a 可以两个if这样写吗,这样写看来是“或”的意思?
作者: hanyeguxing    时间: 2010-6-8 14:59

原帖由 phanphan 于 2010-6-8 13:33 发表
小白提问:
1. set /a x=!a!  %%  %%a,y=!b!  %%  %%a 中,中间的那对%%是起什么作用啊?
2.  if !x! equ 0 if !y! equ 0 set /a a/=%%a,b/=%%a 可以两个if这样写吗,这样写看来是“或”的意思?

1,求余(取模)运算符
2,与,和。


推荐楼主使用数学算法来约分,这样效率更高:
  1. @echo off
  2. set/p a=请输入分数的分子:
  3. set/p b=请输入分数的分母:
  4. cls&echo.原分数为:%a%/%b%
  5. if %a% equ %b% set han=1&goto:han
  6. if %a% gtr %b% (set ye=%a%&set gu=%b%) else set ye=%b%&set gu=%a%
  7. :ye
  8. set/a xing=ye%%gu
  9. if %xing%==0 (set/a a/=gu,b/=gu) else set ye=%gu%&set gu=%xing%&goto:ye
  10. set han=%a%/%b%
  11. :han
  12. echo.约分后为:%han%&pause>nul
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-8 16:02 编辑 ]
作者: 523066680    时间: 2010-6-8 18:55     标题: 回复 1楼 的帖子

报告,8字应该是本顿。名字旁弄个(8888) 模仿极品qq号……




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