Advertisement
Guest User

SQRT

a guest
Oct 21st, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.38 KB | None | 0 0
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. :sqrt
  5. set toparse=0
  6. set answer=
  7.  
  8. set partpartans=0
  9. set partans=
  10. set part=0
  11. set adder=00
  12.  
  13. set operation=00
  14.  
  15. set precision=0
  16.  
  17. cls
  18. echo _______________________
  19. echo.
  20. echo Square Root Calculator
  21. echo _______________________
  22. echo.
  23. set/p toparse=" Enter number: "
  24. set/p precision=" Enter precision: "
  25.  
  26. call :StrLen toparse lengthh
  27. set /a "length=%lengthh%-1"
  28. set number=
  29. set decimal=no
  30. for /l %%l in (0,1,%length%) do (
  31.     set now=!toparse:~%%l,1!
  32.     if not !now!==. set number=!number!!now!
  33.     if !now!==. (
  34.         set/a "decimal=(%%l+1)/2"
  35.         set/a "decimalpos=%%l+1"
  36.     )
  37. )
  38. set newlen=%length%
  39. if not %decimal%==no set/a newlen=%length%-1
  40. if %decimal%==no set/a decimalpos="%lengthh%+1"
  41. if %decimal%==no set/a decimal=(%lengthh%+1)/2
  42. set/a septest=%decimalpos%-1
  43. set/a sepmod="!septest! %% 2"
  44. set sepstart=0
  45. if %sepmod%==1 (
  46.     set sepstart=1
  47.     set cut1=!number:~0,1!
  48. )
  49. for /l %%c in (%sepstart%,2,%newlen%) do (
  50.     set now=!number:~%%c,2!
  51.     set/a nowcut=%%c+1
  52.     set cut!nowcut!=!now!
  53. )
  54. call :StrLen cut!nowcut! multip
  55. if %multip%==1 set/a cut!nowcut!="cut!nowcut!*10"
  56.  
  57. for /l %%p in (1,1,!precision!) do (
  58.     if %%p leq !nowcut! set operation=!cut%%p!
  59.     if not %%p leq !nowcut! set operation=00
  60.     set/a "pminus=%%p-1"
  61.     if "!decimal!"=="!pminus!" set answer=!answer!.
  62.     if %%p==1 set/a "subtracted=!operation!"
  63.     for /l %%i in (0,1,9) do (
  64.         set /a "part=20*!partpartans!*%%i+%%i*%%i"
  65.         if !part! leq !subtracted! set partans=%%i
  66.     )
  67.     set/a "finalpart=20*%partpartans%*!partans!+!partans!*!partans!"
  68.     echo - finalpart: !finalpart!
  69.     set "answer=!answer!!partans!"
  70.     set "partpartans=!partpartans!%partans%"
  71.     if %%p==1 set "partpartans=!partans!"
  72.     set/a pplus=%%p+1
  73.     echo !pplus!
  74.     if !pplus! leq !nowcut! call set adder=%%cut!pplus!%%
  75.     if not !pplus! leq !nowcut! set "adder=0"
  76.     echo adder: !adder!
  77.    
  78.     if !precision! geq 2 (
  79.         if not %%p==!precision! (
  80.             set/a subtracted="!subtracted!-!finalpart!"
  81.             set/a subtracted="!subtracted!*100"
  82.             set/a subtracted="!subtracted!+!adder!"
  83.         )
  84.     )
  85. )
  86. echo _______________________
  87. echo.
  88. echo  Answer: !answer!
  89. echo _______________________
  90. pause >nul
  91.  
  92. exit
  93.  
  94. :StrLen
  95. setlocal disabledelayedexpansion
  96. set len=0
  97. if defined %~1 for /f "delims=:" %%n in (
  98.   '"(cmd /v:on /c echo(!%~1!&echo()|findstr /o ^^"'
  99. ) do set /a "len=%%n-3"
  100. endlocal & if "%~2" neq "" (set %~2=%len%) else echo %len%
  101. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement