中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 重新练习开平方 上一主题 | 下一主题
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『楼 主』:  重新练习开平方

前面有发的在处理小数不是很完善
非常批处理那里的兄弟指出了递减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 ]

   此帖被 +5 点积分      点击查看详情   
评分人:【 s11ss 分数: +5  时间:2008-3-16 21:39




简单!简单!再简单!
2008-3-16 19:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 2 楼』:  

看不懂,佩服一下先

2008-3-16 21:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

能否顺便把算法讲解一下?

2008-3-16 23:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 4 楼』:  



  Quote:
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



简单!简单!再简单!
2008-3-17 01:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 5 楼』:  

好东西,不过运行结果好像有点问题:

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

2008-3-17 14:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 6 楼』:  

发现问题了,双击运行不会有这种现象,在命令提示符下运行才会出现这种现象

2008-3-17 14:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bushcet
新手上路





积分 6
发帖 3
注册 2008-2-28
状态 离线
『第 7 楼』:  佩服

佩服佩服佩服!

2008-3-17 14:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: