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!
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
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?
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
Lo modifique a double y efectivamente funciono! :D ahora si el programa factoriza cualquier numero.. Muchas gracias x la ayuda!! :D
Saludos!!
Cita de: rob1104 en 9 Agosto 2010, 17:28 PM
Para imprimirlo con printf el modificador es %lld
Sería %llu, no %lld.