Помогите, пожалуйста. Надо переделать код для лазаруса (из pascalABC на Freepascal), а то программа не выполняется, выдается фатальная ошибка, хоть с синтаксисом все нормально
type point=record
x,y:real;
end;
var a:array[1..3] of point;
i,j: integer;
z: point;
c: real;
begin
writeln('Координаты вершин');
readln(a[1].x,a[1].y,a[2].x,a[2].y,a[3].x,a[3].y);
//отсортируем по убыванию y
for i:=1 to 2 do
for j:=i+1 to 3 do
if a[i].y>a[j].y then
begin
z:=a[j];
a[j]:=a[i];
a[i]:=z;
end;
//выбираем первую точку
if a[2].x a[2].x then
begin
z:=a[3];
a[3]:=a[2];
a[2]:=z;
end;
for i:=1 to 3 do begin
c:=sqrt(a[i].x*a[i].x + a[i].y*a[i].y);
writeln ('Расстояние от начала координат',' ',c);
end;
readln
end.
Answers & Comments
Я комментарием пометил ошибку
type point=record
x,y:real;
end;
var a:array[1..3] of point;
i,j: integer;
z: point;
c: real;
begin
writeln('Координаты вершин');
readln(a[1].x,a[1].y,a[2].x,a[2].y,a[3].x,a[3].y);
//отсортируем по убыванию y
for i:=1 to 2 do
for j:=i+1 to 3 do
if a[i].y>a[j].y then
begin
z:=a[j];
a[j]:=a[i];
a[i]:=z;
end;
//выбираем первую точку
if a[2].x a[2].x then // Ошибка, здесь ничего не сравнивается
begin
z:=a[3];
a[3]:=a[2];
a[2]:=z;
end;
for i:=1 to 3 do begin
c:=sqrt(a[i].x*a[i].x + a[i].y*a[i].y);
writeln ('Расстояние от начала координат',' ',c);
end;
readln
end.