Дана матрица P с двумя строками и десятью столбцами, каждым столбцом которой задана абсцисса и ордината одной - Pascal ABC

Формулировка задачи:

Дана матрица P с двумя строками и десятью столбцами, каждым столбцом которой задана абсцисса и ордината одной из десяти точек плоскости. Если нет ни одной пары точек, расстояние между которыми меньше заданной величины R, заменить на нуль в матрице P все отрицательные абсциссы точек, увеличив ординаты этих точек на R.

Код к задаче: «Дана матрица P с двумя строками и десятью столбцами, каждым столбцом которой задана абсцисса и ордината одной - Pascal ABC»

textual
const n=2;m=10;
var p:array[1..n,1..m] of real;
    i,j:integer;
    r:real;
    f:boolean;
begin
 f:=false;
 writeln('P:');
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     p[i,j]:=random*(-10+random(21));
     write(p[i,j]:7:2)
    end;
   writeln
  end;
 write('R = ');readln(r); 
 j:=1;
 while (not f)and(j<m) do
  begin
   i:=j+1;
   while(not f) and (i<=m) do
    begin
     if sqrt(sqr(p[1,j]-p[1,i])+sqr(p[2,j]-p[2,i]))<r then f:=true;
     inc(i)
    end;
   inc(j)
  end; 
 if not f 
  then
   begin
    writeln('нет ни одной пары точек, расстояние между которыми меньше ',r:0:2);
    writeln('P'':');
    for i:=1 to m do if p[1,i]<0 then begin p[1,i]:=0;p[2,i]:=p[2,i]+r end;
    for i:=1 to n do
     begin
      for j:=1 to m do write(p[i,j]:7:2);writeln
     end;
   end
  else writeln('пара точек, расстояние между которыми меньше ',r:0:2,
               ' : (',p[1,j-1]:0:2,',',p[2,j-1]:0:2,'), (',p[1,i-1]:0:2,',',p[2,i-1]:0:2,')')
end.

15   голосов, оценка 4.133 из 5


СОХРАНИТЬ ССЫЛКУ