Дан массив записей о точках на плоскости. Проверить, расположены ли расстояния от точек до начала координат в порядке возрастания, если нет - отсортировать.

program toch;

{$APPTYPE CONSOLE}

uses
SysUtils;

type tochki=record
x:real;
y:real;
end;

tmas=array[1..20] of tochki; {massiv tochek}

var n,m:integer;
t:tmas;
i:integer;

procedure vvod(n1:integer;var t1:tmas);
var i:integer;

begin
for i:=1 to n1 do begin
writeln('Vvedite koordinaty X',i);readln(t1[i].x);
writeln('Vvedite koordinaty Y',i);readln(t1[i].y);
end;
end;

procedure vivod(n1:integer;t1:tmas);
begin
for i:=1 to n1 do
writeln(t1[i].x:2:0,' ',t1[i].y:2:0);
end;

function rast(x1:real;y1:real):real;
var q:real;
begin
q:=sqrt(sqr(x1)+sqr(y1));
rast:=q;
end;

procedure proverka(n1:integer;var m1:integer; var t1:tmas);
var p,j:integer;
ra:array[1..20] of real;
buf:tochki;
begin

for i:=1 to n1 do
ra[i]:=rast(t1[i].x,t1[i].y);

p:=1;
for i:=1 to n1-1 do
if ra[i]>ra[i+1] then p:=0;

if p=0 then m1:=0
else m1:=1;

if p=0 then
for i:=1 to n1-1 do begin
for j:=1 to n1-i do
if rast(t[j].x,t[j].y)>rast(t[j+1].x,t[j+1].y) then begin
buf.x:=t[j].x;
buf.y:=t[j].y;
t[j].x:=t[j+1].x;
t[j].y:=t[j+1].y;
t[j+1].x:=buf.x;
t[j+1].y:=buf.y;
end;


end;
end;






begin {osn programma}
writeln('Vvedite kol-vo tochek');
readln(n);
vvod(n,t);
proverka(n,m,t);
if m=0 then writeln('Net. Ots. massiv: ');
vivod(n,t);
if m=1 then writeln('DA');

readln;
end.





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.