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%
para el parametro usa la variable %1
hice este code a ver si te sirve:
@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 ;)
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
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 ;)