He hecho un programa que me devuelve el factorial de un numero, pero a partir del numero 34 todos los demás factoriales me dan 0, y otros números salen negativos como el 33,32,29,28,26,24,22 y otros pocos salen bien, aquí esta el código:
Código:
#include <stdio.h>
int main ()
{
int num; //numero introducido
int ni, n; //factorial
printf("Introduzca numero, (-1 para terminar): ");
scanf("%d", &num);
while (num != -1){
if (num == 0){
ni = 1;
}
else if (num == 1){
ni = 1;
}
else{
n = num;
ni = n * (n-1); //ni es "n!"
--n;
while (n != 1){ //sacar factorial de numero mayor a 2
ni = ni * (n-1);
n -= 1;
}
}
printf("El factorial de %d es %d\n", num, ni);
printf("Introduzca numero, (-1 para terminar): ");
scanf("%d", &num);
}
system("pause");
return 0;
}
Lo de los números que me dan cero, no se si sera porque la variable tenga un limite de almacenamiento, pero lo de los factoriales negativos, no me lo explico.
¿Tengo mal el código?