Board logo

标题: [数值计算] 已知算术表达式a+b=c 中的某两个值如何用批处理求另一个值? [打印本页]

作者: qwd    时间: 2009-6-27 03:02     标题: 已知算术表达式a+b=c 中的某两个值如何用批处理求另一个值?

  1. @echo off
  2. echo 设: a+b=c
  3. echo 输入a b c 任意两个值,求得另一个未知数 ?=
  4. for %%i in (a b c) do set %%i=?&set/p %%i=%%i=?
  5. if %a%==? set/a a=c-b&call echo a=%%a%%
  6. if %b%==? set/a b=c-a&call echo b=%%b%%
  7. if %c%==? set/a c=a+b&call echo c=%%c%%
  8. pause
  9. ::极简单的题要用这么多 if 吗?有人说用goto但也要分三种情况解决吧!
复制代码

作者: 随风    时间: 2009-6-27 09:45

如果只是加法
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=?+3=8
  3. for /f "tokens=1-3 delims=+=" %%a in ("%var%") do (
  4.    if "%%c"=="?" (set ss=%%a+%%b) else (
  5.       set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"
  6.     )
  7. )
  8. set /a num=%ss%
  9. echo !var:?=%num%!
  10. pause
复制代码

作者: zljzsmzzx    时间: 2009-6-27 20:32     标题: 回复 2楼 的帖子

“set %%a=%%b&set %%b=%%a&set "ss=%%c-!?!"”妙!!
作者: 随风    时间: 2009-6-27 21:04

如果是 + - * / 的
  1. @echo off
  2. :start
  3. setlocal enabledelayedexpansion
  4. echo;&echo 请输入算式如:5*?=40
  5. set /p var=&cls
  6. set "var2=%var:?=%"
  7. set .-=a&set ./=a&set +=-&set -=+&set /=*&set "*=/"
  8. for /l %%a in (0 1 9) do set var2=!var2:%%a=!
  9. set "ff=%var2:~0,1%"&set "f=!%var2:~0,1%!"
  10. for /f "tokens=1-3 delims=+-/*=" %%a in ("%var%") do (
  11.    if "%%c"=="?" (set ss=%%a%ff%%%b) else (
  12.       if "%%a"=="?" (set ss=%%c%f%%%b) else (
  13.          if defined .!ff! (set ss=%%a%ff%%%c) else set "ss=%%c%f%%%a"
  14. )))
  15. set /a num=!ss!
  16. set "str=!var:?=%num%!"
  17. echo 你输入的是:%var%
  18. echo 计算结果是:!str!
  19. endlocal&goto start
复制代码





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