Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: HRSLASH en 9 Agosto 2010, 17:11 pm



Título: [C]Factorial de un numero
Publicado por: HRSLASH en 9 Agosto 2010, 17:11 pm
Hola foreros!! :D aca dejo un programita que calcula el factorial de un numero. El problema que tiene es que cuando se ingresa un numero mayor a 12 da un resultado erroneo, declare la variable factorial con todos los tipos pero en ningun caso funciono.. como se podria solucionar??

Código
  1. #include<stdio.h>
  2.  
  3. main()
  4. {
  5.      int i, num;
  6.      double factorial = 1;
  7.  
  8.      printf("FACTORIAL DE UN NUMERO\n\n");
  9.      printf("Ingrese un numero: ");
  10.      scanf("%d", &num);
  11.  
  12.      for (i = 1; i <= num; i++)
  13.          factorial *= i;
  14.  
  15.      printf("\n%d! = %.0f\n", num, factorial);
  16.  
  17.      return 0;
  18. }
  19.  

P.D: Acabo de modificar el codigo, ahora si factorea cualquier nº. Grax rob1104!


Título: Re: [C]Factorial de un numero
Publicado por: rob1104 en 9 Agosto 2010, 17:28 pm
Hola, probaste con unsigned long long?? Acepta el rango: 0 a 18,446,744,073,709,551,615.
Para imprimirlo con printf el modificador es %lld
Código
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.      int i, num;
  6.      unsigned long long factorial = 1;
  7.  
  8.      printf("FACTORIAL DE UN NUMERO\n\n");
  9.      printf("Ingrese un numero: ");
  10.      scanf("%d", &num);
  11.  
  12.      for (i = 1; i <= num; i++)
  13.          factorial *= i;
  14.  
  15.      printf("\n%d! = %lld\n", num, factorial);
  16.  
  17.      return 0;
  18. }
  19.  

Saludos


Título: Re: [C]Factorial de un numero
Publicado por: HRSLASH en 9 Agosto 2010, 17:34 pm
Hola rob! gracias x tu ayuda! lo acabo de probar asi pero tampoco da el rtdo correcto..  :-\ t hago una preg, pq lo declaras unsigned?


Título: Re: [C]Factorial de un numero
Publicado por: rob1104 en 9 Agosto 2010, 17:45 pm
Era solo para mas rango positivo pero veo que no es suficiente.

Intenta declarando la variable factorial tipo double, y en el printf prueba con el modificador %.0f, si no quieres ver tantos 0s puedes usar el %e para notacion cientifica.

Saludos


Título: Re: [C]Factorial de un numero
Publicado por: HRSLASH en 9 Agosto 2010, 18:38 pm
Lo modifique a double y efectivamente funciono!  :D ahora si el programa factoriza cualquier numero.. Muchas gracias x la ayuda!!  :D

Saludos!!


Título: Re: [C]Factorial de un numero
Publicado por: leogtz en 9 Agosto 2010, 23:04 pm
Para imprimirlo con printf el modificador es %lld


Sería %llu, no %lld.