Test Foro de elhacker.net SMF 2.1

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??


#include<stdio.h>

main()
{
      int i, num;
      double factorial = 1;
     
      printf("FACTORIAL DE UN NUMERO\n\n");
      printf("Ingrese un numero: ");
      scanf("%d", &num);
     
      for (i = 1; i <= num; i++)
          factorial *= i;
     
      printf("\n%d! = %.0f\n", num, factorial);

      return 0;
}


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
#include<stdio.h>

int main()
{
     int i, num;
     unsigned long long factorial = 1;

     printf("FACTORIAL DE UN NUMERO\n\n");
     printf("Ingrese un numero: ");
     scanf("%d", &num);

     for (i = 1; i <= num; i++)
         factorial *= i;

     printf("\n%d! = %lld\n", num, factorial);

     return 0;
}


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
Cita de: rob1104 en  9 Agosto 2010, 17:28 PM
Para imprimirlo con printf el modificador es %lld


Sería %llu, no %lld.