SoloCodigo
		Programación General => Pascal => Mensaje iniciado por: delfros en Miércoles 30 de Mayo de 2007, 18:39
		
			
			- 
				tengo una duda con el siguiente programa, soy nuevo con el ciclo for y no consigo la falla del siguiente programa. 
NOTA: el programa me funciona para calcular valores de factoriales entre 1 y 7, pero al ingresar como valor de n= 8 me da un valor errado (-25216) y al ingresar n= 25 me da 0, 
program factorial; 
var n,i,fact: integer; 
begin 
write ('Ingrese el numero al cual le desea calcular su factorial:'); 
readln (n); 
fact:=1; 
for i:=1 to n do 
fact:=fact*i; 
writeln (' El factorial de ',n,' es: ',fact); 
readln; 
end. 
Agradeceria que me comunicaran a que se debe la falla
			 
			
			- 
				Es simple. En informática, a diferencia de las matemáticas 100% teóricas, tienes que considerar también que existen límites de rango y de precision. En este caso el tipo entero que usas es de 16 bits con signo (integer), por lo tanto no puede representar un valor mayor a 32767, luego como 8! es mayor al limite anterior tu programa no funcionará a menos que utilices un tipo de dato aplicable al problema que tenga mayor capacidad, por ejemplo un tipo de numero flotante como double.
Nota: Dependiendo del compilador el tipo integer puede ser de 16 o 32 bits, en este caso claramente es de 16bits.