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

回复 7楼 的帖子

Re 7 楼
代码问题可不小

[ 本帖最后由 523066680 于 2009-2-7 14:59 编辑 ]

TOP

我来描述一下程序应有什么功能罢

  判断输入正确性及计算顺序;
  对两个分数进行相应四则运算,直到计算完成;
    循环调用(这个可能比较难)
  最小公约数、最大公倍数计算(已经有了);
  输入与输出显示。

TOP

优先级的判断很有难度,括号优先、乘除优先,还有很多,都是很麻烦的。。。

TOP

给个小建议:运算符可以放在前面
    + 1/2 1/3

还有乘除法呢?可以将不同级运算算放在不同的模块里,然后分开调用,应该维护修改都比较方便的.
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

所以说做成函数最方便了。。。

TOP

小改一下~  帖子沉的真快   我下个星期再来喽~ 慢慢来~

简单的两个分数之间的加 减 乘 除    乘用 x  表示
  1. @echo off &setlocal enabledelayedexpansion
  2. set /p input="输入格式如 1/2 + 3/4 两分数之间的乘法用 x 表示 : "
  3. call :readinput "%input%" inp
  4. call :readinput "%inp1:/= %" left
  5. call :readinput "%inp3:/= %" right
  6. if %inp2% equ + (set /a lr1=left1*right2 + right1*left2,lr2=left2*right2)
  7. if %inp2% equ - (set /a lr1=left1*right2 - right1*left2,lr2=left2*right2)
  8. if %inp2% equ x (set /a lr1=left1*right1,lr2=left2*right2)
  9. if %inp2% equ / (set /a lr1=left1*right2,lr2=left2*right1)
  10.     call :cut %lr1% %lr2%
  11.     set /a lr1=lr1/del,lr2=lr2/del
  12.     echo,%lr1%/%lr2%
  13. pause>nul &exit
  14. :readinput
  15. set readinput=0
  16. for %%a in (%~1) do (set /a "readinput+=1" &set %2!readinput!=%%a)
  17. goto :eof
  18. ::Function::取出最大公约数,赋值给del
  19. :cut
  20. set /a a=%1,b=%2
  21. :cut-1
  22. set /a mod=a%%b,adb=a/b
  23. if %mod% equ 0 (set del=%b%) else (set /a "a=b,b=mod" &goto :cut-1)
  24. goto :eof
复制代码

TOP

返回列表