Как сделать квадратный корень с командным процессором Windows, используя командный файл?

Как в мире я делаю квадратные корни в партии?

@echo off
Title SquareRoot

:SquareRoot
cls
echo Number:
set /p number=
set /a answer=sqrt %number%
echo Number: %number%
echo Answer: %answer%
pause
goto SquareRoot

2 ответа

Большинство новых операционных систем поставляется с Powershell, поэтому самое простое решение - использовать эту возможность. Вы могли бы сделать аналогичные решения с Vbscript и jscript.

@echo off
set /p number=Number:
for /F "delims=" %%G IN ('powershell -command "[math]::Sqrt(%number%)"') do @echo %%G

А вот и гибридный jscript/ пакетный файл.

@if (@X)==(@Y) @end /* harmless hybrid line that begins a JScrpt comment
@echo off
set /P number=Number:
FOR /F "delims=" %%G IN ('cscript //E:JScript //nologo "%~f0" %number%') DO set sqr=%%G
echo Square root of %number% is %sqr%
pause
exit /b

************ JScript portion ***********/
WScript.StdOut.Writeline(Math.sqrt(WScript.Arguments.Unnamed(0)));

Вот мое решение:

@echo off

Title SquareRoot
:StartSquareRoot
cls
echo Number:
set /p number=

call :SquareRoot %number%

echo Number: %number%
echo Answer: %answer%

pause

goto StartSquareRoot

:SquareRoot
    SETLOCAL EnableDelayedExpansion
    set root=1
    set /a sqr=%root%*%root%
    :Loop
    if %sqr% LSS %number% (
        set /a root=!root!+1
        set /a sqr=!root!*!root!
        goto Loop
    )
(EndLocal && set answer=%root% && exit /B)

Пример выполнения

C:\>sqrt.bat
Number:
25
Number: 25
Answer: 5
Press any key to continue . . .
Number:
36
Number: 36
Answer: 6
Press any key to continue . . .
Number:
49
Number: 49
Answer: 7
Press any key to continue . . .
Number:
56
Number: 56
Answer: 8
Press any key to continue . . .
Другие вопросы по тегам