Неверная вещественная операция на 5 строчке. что нужно изменить? есть ли ещё ошибки?

неверная вещественная операция на 5 строчке. что нужно изменить? есть ли ещё ошибки?
program z21;
var x1,y1,x2,y2,x3,y3,S,P,k,d1,d2,d3: real;
begin
read (x1,y1,x2,y2,x3,y3);
d1:=SQRT((x2-x1)+(y2-y1));
d2:=SQRT((x3-x2)+(y3-y2));
d3:=SQRT((x3-x1)+(y3-y1));
k:=(d1+d2+d3)/2;
P:=l1+l2+l3;
S:=SQRT(k*(k-d1)*(k-d2)*(k-d3));
Writeln('P:=',P);
Writeln('S:=',S);
end.

  • Что должна делать программа?

    Раз, два, три, четыре, б..ть, начинаю телепать:

    d1:=SQRT((x2-x1)+(y2-y1));
    d2:=SQRT((x3-x2)+(y3-y2));
    d3:=SQRT((x3-x1)+(y3-y1));

    нужно заменить на

    d1:=SQRT(SQR(x2-x1)+SQR(y2-y1));
    d2:=SQRT(SQR(x3-x2)+SQR(y3-y2));
    d3:=SQRT(SQR(x3-x1)+SQR(y3-y1));

    Иначе программа, если она у вас заработает, не будет работать верно.

    P:=l1+l2+l3;

    Где объявлены и откуда взялись переменные l1, l2, l3? Зачем они вообще нужны, если стороны вы уже вычислили и они у вас называются d1, d2, d3?