Задание:
Даны координаты 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