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

Узнай цену своей работы

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

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

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

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.

Объяснение кода листинга программы

const n=2;m=10; var p:array[1..n,1..m] of real; var i,j:integer; var r:real; var 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
Похожие ответы