Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: AgnesBlack en 22 Julio 2012, 00:25 am



Título: [BATH]Sobre operadores de division
Publicado por: AgnesBlack en 22 Julio 2012, 00:25 am
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
  1. echo off
  2. echo ingresar a
  3. set /p a=
  4. echo ingresr b
  5. set /p b=
  6. set /a division=%a%/%b%
  7. echo la division es: %division%
  8. pause>nul


solamente me falta para el resto y el cociente


Título: Re: [BATH]Sobre operadores de division
Publicado por: Binary_Death en 22 Julio 2012, 00:30 am
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:

Código:
@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.


Título: Re: [BATH]Sobre operadores de division
Publicado por: AgnesBlack en 22 Julio 2012, 23:00 pm
bien entonce mi codigo quedaria mas completo o algo asi , de esta forma

Código:
@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 ?

Código:
@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?


Título: Re: [BATH]Sobre operadores de division
Publicado por: Binary_Death en 22 Julio 2012, 23:06 pm
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
  1. :calc
  2. (Echo.%~2=%~1&&Echo.Wscript.StdOut.Write %~2) 1>%temp%\calc.vbs
  3. for /f %%A in ('cscript //nologo %temp%\calc.vbs') do (set "%~2=%%A")
  4. GoTo:EoF
  5.  

Se usa, por ejemplo, así:

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

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 %.



Título: Re: [BATH]Sobre operadores de division
Publicado por: AgnesBlack en 22 Julio 2012, 23:14 pm
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


Título: Re: [BATH]Sobre operadores de division
Publicado por: Binary_Death en 22 Julio 2012, 23:16 pm
De nada, me alegra haberte ayudado.

Saludos y suerte ;)