Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: rackdon en 28 de Abril 2014, 12:00
-
buenos dias.
Tengo un ejercicio que consiste en calcular el factorial de un número. Cuando supero el factorial de 12 los resultados no son los esperados, supongo que sera por la longitud de la constante. ¿Hay alguna forma de solucionar eso?
Gracias
A continuacion pongo el codigo a ver si hay alguna solucion:
// Ejercicio 4.14: Calculo de factorial //
#include <stdio.h>
main()
{
int numero, control;
int total = 1;
printf("Por favor introduzca el n%cmero del factorial que desea calcular: ", 163);
scanf("%d", &numero);
for ( control = numero; control >= 1; control--) {
total *= control;
printf("%d\t", total);}
printf("\n\nel resultado del factorial indicado es: %d\n\n", total);
system("pause");
return 0;
}
-
El problema está en que los computadores no pueden trabajar con números infinitamente grandes, tienen un límite. Hay factoriales que no podrás calcular por exceder la capacidad de los computadores. Puedes solucionar parcialmente el problema usando el tipo de dato double en vez del tipo int, ya que double es el que permite un rango numérico más amplio (tiene más capacidad), pero siempre llegará un momento en que excedas la capacidad y ya no sea posible realizar el cálculo. Saludos.
-
Muchisimas gracias. Ya está todo arreglado