Как сделать квадратный корень с командным процессором 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 . . .