![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 19:01 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 重新练习开平方 |
| 可打印版本 805 / 6 |
| 第1楼 terse | 发表于 2008-03-16 19:26 |
| 银牌会员 发帖 946 积分 2,404 | |
|
重新练习开平方 前面有发的在处理小数不是很完善
非常批处理那里的兄弟指出了递减M可以省去一个SET 修改下 @echo off set a=2 set/p p=请输入需要开平方的数字(0~321063之间) set/p w=请输入精确到小数点后几位 :lp set /a a=(p/a+a)/2,n=a*a,y=p-n set r=%a% if %n% gtr %p% goto lp if %n% equ %p% goto ok :lp1 set/a b+=1,m=10,x=r*20,y*=100 :lp2 set/a m-=1,s=(x+m)*m if %s% gtr %y% goto lp2 set/a y-=s set r=%r%%m%&set t=%t%%m% if %w% gtr %b% goto lp1 :ok if not "%t%" == "" set a=%a%.%t% echo %p%开平方结果: %a% pause>nul [ Last edited by terse on 2008-3-17 at 03:58 PM ] |
|
| 第2楼 s11ss | 发表于 2008-03-16 21:39 |
| 银牌会员 发帖 566 积分 2,098 | |
|
看不懂,佩服一下先
|
|
| 第3楼 HAT | 发表于 2008-03-16 23:27 |
| 版主 发帖 5,017 积分 9,023 | |
|
能否顺便把算法讲解一下?
|
|
| 第4楼 terse | 发表于 2008-03-17 01:12 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by HAT at 2008-3-16 23:27: :lp ::迭代法算出整数,并得出迭代出整数的平方和%P%的差Y,Y作余数推下, set /a a=(p/a+a)/2,n=a*a,y=p-n set r=%a% if %n% gtr %p% goto lp if %n% equ %p% goto ok :lp1 ::位移2位Y,即Y*100,从高位往低位推出小数,再从1到9试商Y(大不过9), ::将商的20倍加上这个试商再乘以试商,如果所得的积S小于余数,确定试商M! set/a b+=1,m=0,x=r*20,y*=100 :lp2 set/a m+=1,s=(x+m)*m if %s% gtr %y% goto lp3 goto lp2 :lp3 ::继续上步,再求余数Y,类推下.. set/a m-=1,s=(x+m)*m,y-=s set r=%r%%m%&set t=%t%%m% if %w% equ %b% goto ok goto lp1 |
|
| 第5楼 moniuming | 发表于 2008-03-17 14:46 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
好东西,不过运行结果好像有点问题:
F:\test\more\新建文件夹>test 请输入需要开平方的数字(0~321063之间)100 请输入精确到小数点后几位2 100开平方结果: 10.09 F:\test\more\新建文件夹>test 请输入需要开平方的数字(0~321063之间)100 请输入精确到小数点后几位1 100开平方结果: 10.09 F:\test\more\新建文件夹>test 请输入需要开平方的数字(0~321063之间)100 请输入精确到小数点后几位0 100开平方结果: 10.09 |
|
| 第6楼 moniuming | 发表于 2008-03-17 14:53 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
发现问题了,双击运行不会有这种现象,在命令提示符下运行才会出现这种现象
|
|
| 第7楼 bushcet | 发表于 2008-03-17 14:53 |
| 新手上路 发帖 3 积分 6 | |
|
佩服 佩服佩服佩服!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |