Дело в том, что факториал числа представляет собой довольно большое значение, которое не влазит в ячейку real, если вводить даже не очень большие числа.
Для чисел, не превышающих 170:
uses crt;var f:real;
x,n:integer;
begin
f:=1;
write('N='); readln(N);
if N<0 then writeln('ERROR!') else<br> if N=0 then writeln('N!=',1)
else begin
for x:=2 to N do
f:=f*x;
writeln('N!=',f); end;
readln;
end.