中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: for 加 set /a 能否实现开方 上一主题 | 下一主题
6622186
高级用户





积分 894
发帖 411
注册 2007-2-17
状态 离线
『楼 主』:  for 加 set /a 能否实现开方

for 加 set /a 能否实现开方



@set c=     不知则觉多,知则觉少,越知越多,便觉越来越少.        --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


2007-3-15 09:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

我一直没有思路

2007-3-16 01:32
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 3 楼』:  

  可以实现简单的开方,但是效率不怎么样,并且只限于存在整数次方根的情况,当然,超过2^31-1的数字就不行了。基本思路就是:如果对x开n次方,则从2开始到x/n的整数止,对每个数进行测试,只到找到为止,代码如下:
@echo off

setlocal enabledelayedexpansion

:Main
cls
set x=
set n=
set /p x=     请输入被开方的数:
set /p n=     请输入开方次数:
set /a mod=%n%%%2

if %x% equ 1 (
    echo.
    echo      %x% 的 %n% 次方根是 1
    echo.
    pause
    goto Main
)

set /a quotient=x/n
set flag=

for /l %%i in (2,1,%quotient%) do (
    set num=%%i
    for /l %%j in (2,1,%n%) do (
        set /a num=%%i*!num!
    )
    if !num! equ %x% (
        echo.
        if %mod% equ 0 (
            echo      %x% 的 %n% 次方根是 ±%%i
        ) else echo      %x% 的 %n% 次方根是 %%i
        echo.
        set flag=1
        goto end
    )
)

:end
if not defined flag (
    echo.
    echo      %x% 的 %n% 次方根不是整数
    echo.
)
pause
goto Main
[ Last edited by namejm on 2007-3-16 at 01:02 PM ]



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-3-16 02:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
6622186
高级用户





积分 894
发帖 411
注册 2007-2-17
状态 离线
『第 4 楼』:  

还不错, 不过当被开方数为负数会提示错误, 如  -27 3



@set c=     不知则觉多,知则觉少,越知越多,便觉越来越少.        --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


2007-3-21 03:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3dnowex
初级用户





积分 41
发帖 20
注册 2007-3-5
状态 离线
『第 5 楼』:  

回去翻一下微积分的书,重点看麦克劳林级数,再利用for循环和set/a 运算

2008-7-31 21:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 6 楼』:  

……郁闷中……namejm没有到我的帖子出现过……



综合型编程论坛

我的作品索引
  
2008-7-31 21:59
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 7 楼』:  

变化的只是头脑,来个简单的。
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 100) do (
     set/a n=%%a*%%a
     set ..!n!=%%a * %%a = !n!
)
set/p var=Input:
if defined ..%var% echo !..%var%!
pause>nul
10000以内。。。

[ Last edited by pusofalse on 2008-7-31 at 11:46 PM ]



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-31 23:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: