Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: elboig en 4 Diciembre 2007, 19:10 PM

Título: ayuda programa bat!!
Publicado por: elboig en 4 Diciembre 2007, 19:10 PM
Buenas!! Lo que necesito es un codigo para crear un programa BAT, es para hacer un ejercicio que no encuentro en ningun sitio lo que necesito es: Un codigo que calcule el factorial de un numero que se ponga como parametro muchas gracias para la gente que me ayude! :D lo he intentado hacer pero no hay manera k funcione... mirar:

rem factorial.bat <numero>
@echo off
set /A n=%1
set /A factorial=1
:1
set /A n0=%n%-1
set /A factorial=%factorial%*%n%*%n0%
set/A n=%n0%
if n0==1 goto 2
:goto1
:2
echo Factorial de %1 es %factorial%
Título: Re: ayuda programa bat!!
Publicado por: nhaalclkiemr en 4 Diciembre 2007, 19:53 PM
para el parametro usa la variable %1

hice este code a ver si te sirve:

Código (dos) [Seleccionar]

@echo off
If "%1"=="" exit /b
set /a x=%1*1
if not "%1"=="%x%" exit /B
If %1 LSS 0 (
echo Error, no existe el factorial de un numero negativo
pause>NUL
exit
)
If %1 GTR 12 (
echo El numero al que se le va calcular el factorial es mayor que 12
echo El resultado sera erroneo!!
)
echo.
set /a res=1
for /L %%I IN (2,1,%1) DO set /A res=%%I*res
echo El factorial de %1 es %res%
pause>NUL
exit


Ya te advierto que solo muestra el factorial de un numero menor o igual que 12, ya que si el numero es mayor que 12 su factorial desborda la variable y te muestra un resultado erroneo...si me apetece otro dia miro si puedo arreglarlo...espero k te sirva...

Un saludo ;)
Título: Re: ayuda programa bat!!
Publicado por: elboig en 4 Diciembre 2007, 20:09 PM
muchas gracias :)

si alguien sabe retocar ese codigo para obtener el factorial de un numero superior a 12.. estaria muy bien jjeje es este:

@echo off
If "%1"=="" exit /b
set /a x=%1*1
if not "%1"=="%x%" exit /B
If %1 LSS 0 (
echo Error, no existe el factorial de un numero negativo
pause>NUL
exit
)
If %1 GTR 12 (
echo El numero al que se le va calcular el factorial es mayor que 12
echo El resultado sera erroneo!!
)
echo.
set /a res=1
for /L %%I IN (2,1,%1) DO set /A res=%%I*res
echo El factorial de %1 es %res%
pause>NUL
exit
Título: Re: ayuda programa bat!!
Publicado por: nhaalclkiemr en 5 Diciembre 2007, 15:13 PM
Jaja el code ya lo tenía puesto yo más arriba...

Yo pienso k no se puede pork las variables están limitadas a 32 bytes...contando numeros negativos, por lo k se keda en 16 bytes...

Aunke supongo k se podría expresar como producto de varios factores (k no desbordasen)...


por ejemplo: 15! = 479001600 * 2730

Pero no me apetece hacerlo...sería comprovar cada ciertas multiplicaciones si se desborda la variable y si lo hace almacena el valor y comienza otro...

weno de momento no me apetece hacerlo...algún día si lo hago lo pongo...

Saludos ;)