Board logo

标题: [数值计算] 批处理穷举法计算开方 [打印本页]

作者: irresolute    时间: 2009-2-10 20:01     标题: 批处理穷举法计算开方

  1. @echo off
  2. :Main
  3. cls
  4. set x=
  5. set n=
  6. set /p x=     请输入被开方的数:
  7. set /p n=     请输入开方次数:
  8. set /a mod=%n%%%2
  9. if %x% equ 1 (
  10.     echo.
  11.     echo      %x% 的 %n% 次方根是 1
  12.     echo.
  13.     pause
  14.     goto Main
  15. )
  16. set /a quotient=x/n
  17. set flag=
  18. for /l %%i in (2,1,%quotient%) do (
  19.     set num=%%i
  20.     for /l %%j in (2,1,%n%) do (
  21.         set /a num=%%i*!num!
  22.     )
  23.     if !num! equ %x% (
  24.         echo.
  25.         if %mod% equ 0 (
  26.             echo      %x% 的 %n% 次方根是 ±%%i
  27.         ) else echo      %x% 的 %n% 次方根是 %%i
  28.         echo.
  29.         set flag=1
  30.         goto end
  31.     )
  32. )
  33. :end
  34. if not defined flag (
  35.     echo.
  36.     echo      %x% 的 %n% 次方根不是整数
  37.     echo.
  38. )
  39. pause
  40. goto Main
复制代码

作者: BBCC    时间: 2009-2-10 20:19

原创的?




不错啊.
作者: namejm    时间: 2009-2-10 20:38

  呵呵,楼主应该交代一下代码的背景吧?
作者: irresolute    时间: 2009-2-10 21:50

这是穷举法
前面少了句setlocal enabledelayedexpansion
不是原创,只是看到了算法,拿了来共享
作者: irresolute    时间: 2009-2-10 21:52

批处理我还是小儿科,请大家多多关照
作者: batman    时间: 2009-2-10 22:31     标题: 即兴写的,凑个热闹了

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p a=请输入要开方的整数:
  3. set "b=2"&set "c=1"
  4. set /p b=请输入要保留的小数位(最好是三位以内,默认回车为两位):
  5. set /a b*=2
  6. for /l %%a in (1,1,%b%) do set /a c*=10
  7. set /a a*=c,d=a/2+1
  8. for /l %%a in (1,1,%d%) do (
  9.      set /a e=%%a*%%a
  10.      if !e! equ %a% set /a e=%%a&goto next
  11.      if !e! gtr %a% set /a e=%%a-1&goto next
  12. )
  13. :next
  14. set /a b/=2
  15. set "f=!e:~-%b%!"
  16. echo 开出的平方根为±!e:%f%=!.%f%
  17. pause>nul
复制代码

[ 本帖最后由 batman 于 2009-2-10 23:24 编辑 ]
作者: Batcher    时间: 2009-2-11 00:58     标题: 回复 4楼 的帖子

请更新顶楼的代码
作者: moshou    时间: 2009-2-15 15:57

ls的各位大大
lz的帖子中那个mod变量为什么在后面用的时候是用%mod%而不是!mod!我发现两种情况是一样的
作者: yunyan100    时间: 2018-9-11 21:14

[ 本帖最后由 batman 于 2009-2-10 23:24 编辑 ]
batman 发表于 2009-2-10 22:31


开方好,就是时间长些




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