[BATH]Sobre operadores de division

Iniciado por AgnesBlack, 22 Julio 2012, 00:25 AM

0 Miembros y 1 Visitante están viendo este tema.

AgnesBlack

Hola queria saber cual es el comando para la division entera y para el resto
osea para el resto se que es el MOD , para el cociente el DIV  y la parte decimal solamente el numero/numero , pero como es escrito en bath ??
por ahora se que para la division en bath es ejemplo

Código (dos) [Seleccionar]
echo off
echo ingresar a
set /p a=
echo ingresr b
set /p b=
set /a division=%a%/%b%
echo la division es: %division%
pause>nul
exit



solamente me falta para el resto y el cociente

Binary_Death

#1
Pues es el operador módulo, que es en programación, en la mayoría de casos, %

Por la forma cómo la cmd interpreta las variables, en un fichero por lotes es necesario poner un doble %.

Por ejemplo:


@Echo Off
set /a "mod=11%%2"
Echo.11 mod 2 = %mod%
pause > nul
exit


PD: Tu código es corto, pero estaría bien que lo pusieras entre sus etiquetas pertinentes  :P

Un saludo.

AgnesBlack

#2
bien entonce mi codigo quedaria mas completo o algo asi , de esta forma


@Echo Off
:inicio
cls
echo ingresar a
set /p a=
echo ingresar b
set /p b=
set /a "mod=a%%b"
echo el resto es: %mod%
pause > nul
goto :inicio
exit



algo asi quedaria el codigo y para el div seria de la siguiente manera ?


@Echo Off
:inicio
cls
echo ingresar a
set /p a=
echo ingresar b
set /p b=
set /a "mod=a%%b"
set /a "div=%a%/%b%
echo el resto es: %mod%
echo el cociente es: %div%
pause > nul
goto :inicio
exit


es la manera correcta de sacar el cociente ?? sin tener en cuenta si es un numero decimal ? o periodico?

Binary_Death

Batch no acepta números decimales de per se. Si quieres trabajar con ellos, tendrás que hacerte tú mismo las funciones adecuadas o usar algunas hechas por otro usuario.

También puedes usar una función que hice hace un tiempo que necesitaba hacer cuentas decimales:

Código (dos) [Seleccionar]

:calc
(Echo.%~2=%~1&&Echo.Wscript.StdOut.Write %~2) 1>%temp%\calc.vbs
for /f %%A in ('cscript //nologo %temp%\calc.vbs') do (set "%~2=%%A")
GoTo:EoF


Se usa, por ejemplo, así:

Código (dos) [Seleccionar]

@echo off
call:calc "5.1+5.1" "rslt"
Echo.%rslt%
pause 1>nul&exit/b
:calc
(Echo.%~2=%~1&&Echo.Wscript.StdOut.Write %~2) 1>%temp%\calc.vbs
for /f %%A in ('cscript //nologo %temp%\calc.vbs') do (set "%~2=%%A")
GoTo:EoF


Guarda este último código y ejecútalo, y verás que devuelve 10.2

Claro que, usa VBS.

Un saludo.

PD: Y sí, no hay más forma de sacar el cociente. El operador división es /, y el operador módulo es %.


AgnesBlack

#4
muchas gracias Binary_Death me despejaste muchas dudas :D de verdad muchas gracias y me pondre a practicar y resolver ejercicios que me piden estos temas de mod y div gracias como no se puede dar puntos te dejo como hacen en taringa +10 jaja saludos y gracias Binary_Death

pd: ya intentare hacer alguna funcion que devuelva enteros decimales y ya guarde tus codec en block de nota ahora los copio en hoja y los vere mas detalladamente

Binary_Death

De nada, me alegra haberte ayudado.

Saludos y suerte ;)