Оглавление Оператор цикла for и одномерные массивы


Программа 3.

Задание:
Даны координаты N точек на плоскости: X[1], Y[1], ..., X[N], Y[N] (N = 20). Найти номера двух точек, расстояние между которыми наибольшее (считать, что такая пара точек единственная).
Решение этой же задачи в Делфи см здесь.

Обсудим план решения.

Текст программы

Program POints;
const NMax=20;
var x,y:array[1..NMax] of double; ii,jj,Na,Nb: integer;
  RMax,Rast: double;
begin randomize;
  writeln('     Таблица координат');
  writeln('№':4,'  X  ':8,'   Y   ':8 );
  {форматирование при выводе - для правильного
   вида таблицы}
  for ii:=1 to NMax do
    begin
      {заполняю массив координат
       случайными числами -100..100 и
       печатаю таблицу координат}
      X[ii]:= (random - 0.5)*200;
      Y[ii]:= (random - 0.5)*200;
      writeln(ii:4,X[ii]:8:2,Y[ii]:8:2);
    end;
  RMax:= 0;
  for ii:=1 to NMax do
    for jj:=ii+1 to NMax do
      begin
        Rast:= sqrt(sqr(X[ii]-X[jj])+sqr(Y[ii]-Y[jj]));
        if (ii=1) and (jj=2) then RMax:=Rast;
        if Rast >= RMax then
          begin
            RMax:= Rast; Na:=ii; Nb:=jj;
            {запомнили наибольшее расстояние и номера
            точек - очередных кандидатов в наиболее
            удалённые друг от друга точки}
            write('+')
          end else write('-');
        writeln(ii:4,jj:4,Rast:8:3);
      end;

   writeln('---- Результат: ------ ');
   writeln('Макс.расстояние = ',RMax:8:3,' точки: ',Na:3,' и ',Nb);
   readln;
end.
---- Результат: -------
     Таблица координат
   №     X      Y
   1  -23.24   85.80
   2    8.91   38.03
   3   51.95    1.56
   4  -37.44  -48.25
   5  -57.27   90.04
   6  -79.94  -83.79
   7  -93.48  -65.79
   8   64.55  -98.71
   9  -51.44  -17.32
  10  -79.32   94.36
  11   35.86   16.64
. . . . . . . . . . .
-   7  17 140.172
-   7  18  68.696
-   7  19  29.550
-   7  20 213.315
-   8   9 141.702
+   8  10 240.788
-   8  11 118.863
-   8  12 112.911
-   8  13 217.281
-   8  14 175.785
. . . . . . . . . 
---- Результат: ------
Макс.расстояние =  240.788 точки:   8 и 10
Rambler's Top100
Hosted by uCoz