elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] CALC: Sumas y restas con decimales
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] CALC: Sumas y restas con decimales  (Leído 3,118 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
[BATCH] CALC: Sumas y restas con decimales
« 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!


« Última modificación: 24 Julio 2012, 16:13 pm por Binary_Death » En línea

AgnesBlack

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: CALC: Sumas y restas con decimales
« Respuesta #1 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?


En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: CALC: Sumas y restas con decimales
« Respuesta #2 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

En línea

AgnesBlack

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: [BATCH] CALC: Sumas y restas con decimales
« Respuesta #3 en: 23 Julio 2012, 02:52 am »

bien gracias ya intentare probar y ver si me sale algo para la division gracias :D
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [BATCH] CALC: Sumas y restas con decimales
« Respuesta #4 en: 24 Julio 2012, 09:16 am »

Código optimizado ;)
En línea

AgnesBlack

Desconectado Desconectado

Mensajes: 44


Ver Perfil
Re: [BATCH] CALC: Sumas y restas con decimales
« Respuesta #5 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
restas horas
Programación Visual Basic
Zeroql 4 1,895 Último mensaje 9 Diciembre 2006, 18:29 pm
por Zeroql
Numeros decimales en batch
Scripting
kraszic 2 9,879 Último mensaje 28 Agosto 2007, 15:36 pm
por kraszic
Division con decimales (batch) ---- by pablo
Scripting
kraszic 3 5,612 Último mensaje 19 Octubre 2007, 17:37 pm
por nhaalclkiemr
[Comando] Float.bat (Sumas y restas con decimales)
Scripting
LauBuru 2 3,022 Último mensaje 29 Junio 2010, 10:45 am
por LauBuru
[Batch] Suma decimales
Scripting
modubat 0 1,980 Último mensaje 15 Septiembre 2010, 20:55 pm
por modubat
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines