Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2015, 15:27
braedu555
 
Fecha de Ingreso: febrero-2015
Mensajes: 20
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta duda para sacar factorial de un numero

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?

Última edición por braedu555; 15/02/2015 a las 15:33