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

[数值计算] 批处理穷举法计算开方

  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
复制代码

原创的?




不错啊.
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

  呵呵,楼主应该交代一下代码的背景吧?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

这是穷举法
前面少了句setlocal enabledelayedexpansion
不是原创,只是看到了算法,拿了来共享

TOP

批处理我还是小儿科,请大家多多关照

TOP

即兴写的,凑个热闹了

  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 编辑 ]
***共同提高***

TOP

回复 4楼 的帖子

请更新顶楼的代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

ls的各位大大
lz的帖子中那个mod变量为什么在后面用的时候是用%mod%而不是!mod!我发现两种情况是一样的

TOP

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


开方好,就是时间长些

TOP

返回列表