type
TOtrezok=record
x1,x2,y1,y2:real;
end;
var
f:file of TOtrezok;
Otrezok:TOtrezok;
n,i:integer;
{создаем файл}
PROCEDURE SaveFile;
BEGIN
write('Введите количество отрезков: ');
readln(n);
assign(f,'file.dat');
rewrite(f);
for i:=1 to n do
begin
writeln('--- ввод кооддинат отрезка №',i,' ---');
write('Введите x1=');
readln(Otrezok.x1);
write('Введите y1=');
readln(Otrezok.y1);
write('Введите x2=');
readln(Otrezok.x2);
write('Введите y2=');
readln(Otrezok.y2);
write(f,Otrezok);
end;
close(f);
writeln('Создан файл file.dat');
END;
{функция возвращает длину отрезка, заданного координатами точек начала и конца}
FUNCTION Dlina(const x1,y1,x2,y2:real):real;
BEGIN
Dlina:=sqrt(sqr(x1-x2)+ sqr(y1-y2));
END;
{процедура для определения координат центра отрезка }
{x1,y1,x2,y2 - координаты точек начала и конца отрезка}
{x,y - координаты центра отрезка }
PROCEDURE Dlina2(const x1,y1,x2,y2:real; var x,y:real);
BEGIN
x:=(x2-x1)/2+x1;
y:=(y2-y1)/2+y1;
END;
{процедура сортировки }
{считывает из файла отрезки в массив и далее сортирует этот массив}
PROCEDURE Sort;
const max=10; {максимальное количество орезков в массиве}
var
Otrezok:array[1..max]of TOtrezok; {массив отрезков}
tmp:TOtrezok;
i,j,n:integer;
x,y:real;
BEGIN
{считываем координаты отрезков в массив}
assign(f,'file.dat');
reset(f);
i:=0;
while not eof(f) and(i<=max) do
begin
inc(i);
read(f,Otrezok[i]);
end;
close(f);
n:=i; {количество считанных отрезков}
{сортировка массива отрезков по их длине}
for i:=1 to n-1 do
for j:=i+1 to n do
if Dlina(Otrezok[i].x1,Otrezok[i].y1,Otrezok[i].x2,Otrezok[i].y2)<
Dlina(Otrezok[j].x1,Otrezok[j].y1,Otrezok[j].x2,Otrezok[j].y2) then
begin
tmp:=Otrezok[i];
Otrezok[i]:=Otrezok[j];
Otrezok[j]:=tmp;
end;
{результат сортировки выведем на экран}
writeln('список отрезков после сортировки');
for i:=1 to n do
begin
Dlina2(Otrezok[i].x1,Otrezok[i].y1,Otrezok[i].x2,Otrezok[i].y2, x,y);
writeln(i,') отрезок (',Otrezok[i].x1:4:1,',',Otrezok[i].y1:4:1,',',
Otrezok[i].x2:4:1,',',Otrezok[i].y2:4:1,' ) длина = ',
Dlina(Otrezok[i].x1,Otrezok[i].y1,Otrezok[i].x2,Otrezok[i].y2):4:1,
' координаты центра (',x:4:2,';',y:4:2,')');
end;
END;
{основная программа}
BEGIN
SaveFile;
readln;
Sort;
readln;
END.