How in the world do I do square roots in batch?
@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
How in the world do I do square roots in batch?
@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
Most newer operating systems comes with Powershell, so the easiest solution is to use that ability. You could do similar solutions with Vbscript and jscript.
@echo off
set /p number=Number:
for /F "delims=" %%G IN ('powershell -command "[math]::Sqrt(%number%)"') do @echo %%G
And here is a hybrid jscript/batch file.
@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)));
Here is my solution:
@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 . . .