Program asd; USES crt; var n,s,q: integer; BEGIN Clrscr; Write('Vvedite n '); Readln(n); S:=1; Q:=1; while q<n do begin q:=q+1; s:=s*q; end; writeln('Otvet: ',s); Readln; END.
Дело в том, что факториал числа представляет собой довольно большое значение, которое не влазит в ячейку real, если вводить даже не очень большие числа. Для чисел, не превышающих 170:
uses crt;var f:real; x,n:integer; begin f:=1; write('N='); readln(N); if N<0 then writeln('ERROR!') else if N=0 then writeln('N!=',1) else begin for x:=2 to N do f:=f*x; writeln('N!=',f); end; readln; end.
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 type Point=record x,y:real end;
function GetPoint(c:char):Point; begin Writeln('Введите координаты точки ',c,':'); Read(Result.x,Result.y) end;
function Line(A,B:Point):real; begin Result:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y)) end;
function SqTriangle(pA,pB,pC:Point):real; begin var a:=Line(pB,pC); var b:=Line(pA,pC); var c:=Line(pA,pB); if (a+b>c) and (a+c>b) and (b+c>a) then begin var p:=(a+b+c)/2; Result:=sqrt(p*(p-a)*(p-b)*(p-c)) end else Result:=0 end;
begin var A:=GetPoint('A'); var B:=GetPoint('B'); var C:=GetPoint('C'); Writeln('Площадь треугольника равна ',SqTriangle(A,B,C)) end.
Тестовое решение: Введите координаты точки A: -5 3.18 Введите координаты точки B: 1.45 6.2 Введите координаты точки C: 6 -5.93 Площадь треугольника равна 45.98975
USES crt;
var n,s,q: integer;
BEGIN
Clrscr;
Write('Vvedite n ');
Readln(n);
S:=1;
Q:=1;
while q<n do
begin
q:=q+1;
s:=s*q;
end;
writeln('Otvet: ',s);
Readln;
END.