Título: [BATCH] CALC: Sumas y restas con decimales Publicado por: Binary_Death en 23 Julio 2012, 02:33 am Aquí dejo una función que es capaz de sumar y restar infinitos términos con tantos decimales como permita la cmd, usando sólo batch.
Dedicada a AgnesBlack, que tenía una duda con esto se ve. Código: @Echo Off more/c<nul call :_calc sub "12.72-8.189605-1.0025" "adt" call :_calc add "%adt%+521.27+5" "adt" echo: 12.72 - 8.189605 - 1.0025 + 521.27 + 5 = %adt% pause 1>nul exit :_calc setlocal enabledelayedexpansion if "%~1" EQU "add" set "sym=+" if "%~1" EQU "sub" set "sym=-" set "add_str=%~2" set "add_str=!add_str:%sym%= !" set/a hst=0,cnt=0,add=0 for %%_ in (%add_str%) do ( set/a dec[!cnt!]=0 for /f "tokens=2 delims=." %%. in ("%%_") do ( call :_strlen "%%." set/a dec[!cnt!]=!errorlevel! if !errorlevel! GTR !hst! set/a hst=!errorlevel! ) set/a cnt+=1 ) set/a cnt=0 if "%sym%" EQU "-" for %%_ in (%add_str:.=%) do ( set/a pow=%hst%-%dec[0]%,n_b=%%_ for /l %%. in (1,1,!pow!) do set "n_b=!n_b!0" set/a add+=!n_b!*2 goto :__op ) :__op for %%_ in (%add_str:.=%) do ( call set/a pow=%hst%-%%dec[!cnt!]%%,n_b=%%_ for /l %%. in (1,1,!pow!) do set "n_b=!n_b!0" set/a add%sym%=!n_b!,cnt+=1 ) set "res=!add:~0,-%hst%!.!add:~-%hst%!" if %hst% EQU 0 set "res=%res:~1%" endlocal & set "%~3=%res%" & exit /b :_strlen setlocal set/a cnt=0 for /f "tokens=* eol=" %%_ in ( '"cmd /u /c echo:%~1|more"' ) do set/a cnt+=1 endlocal & exit /b %cnt% ¡Un saludo! Título: Re: CALC: Sumas y restas con decimales Publicado por: AgnesBlack en 23 Julio 2012, 02:37 am genial wuau una duda hay en la parte de
Código: call :_calc sub "12.72-8.189605-1.0025" "adt" call :_calc add "%adt%+521.27" "adt" podria poner Código: echo ingrese primer numero set /p a= echo ingrese segundo numero set /p b= call :_cal sub "a-b" "adt" hmm no entiendo muy bien el procedimiento pero como generaria dependiendo un numero dado? Título: Re: CALC: Sumas y restas con decimales Publicado por: Binary_Death en 23 Julio 2012, 02:40 am Llamas a la función así:
Código: call :_calc add|sub "operación" "variable" Donde variable será donde se guarde el resultado. Luego, al hacer: Código: echo. %variable% Se te imprimirá en pantalla el resultado. Por supuesto puedes hacer esto: Código: @echo off echo ingrese primer numero set /p "a=" echo ingrese segundo numero set /p "b=" call :_calc sub "%a%-%b%" "adt" echo. Resultado de la resta: %adt% pause > nul exit Título: Re: [BATCH] CALC: Sumas y restas con decimales Publicado por: AgnesBlack en 23 Julio 2012, 02:52 am bien gracias ya intentare probar y ver si me sale algo para la division gracias :D
Título: Re: [BATCH] CALC: Sumas y restas con decimales Publicado por: Binary_Death en 24 Julio 2012, 09:16 am Código optimizado ;)
Título: Re: [BATCH] CALC: Sumas y restas con decimales Publicado por: AgnesBlack en 24 Julio 2012, 22:32 pm genial :D ya posteare los avanze que hice en bath claro son todos ejercicios matematicos hmmm mira tengo una duda viste el codigo que me pasaste? bueno me sale un error al ejecutarlo me dice
Citar "El sistema no encuentra la etiqueta por lotes especificada: _calc Resultado de la resta: :D ya voy entendiendo mas el tema de bath hmm se puede hacer matrices en ella no?? vi en un pdf la explicacion de como insertar decimales en una matris en bath pero no se donde guarde el pdf pero esta interesante |