Конспект лекций по программированию для начинающих. Гладков В.П. - 193 стр.

UptoLike

Составители: 

195
k := 1;
for i:=2 to n do
if b[k]<b[i]
then k := i;
write('Победил разбойник с номером ',k);
end.
Пример 11.57. В одномерном массиве с четным количеством элементов (2·n)
находятся координаты n точек плоскости. Они располагаются в следующем
порядке: x1, y1, x2, y2, x3, y3 и т.д. Определить минимальный радиус окружности с
центром в начале координат, которая содержит все точки, и номера наиболее
удаленных друг от друга точек.
Решение. Для определения минимального радиуса окружности найти точку,
наиболее удаленную от начала координат. Для решения второй части задачи надо
последовательно перебирать все пары точек и отобрать пару точек, наиболее
удаленных друг от друга. Решение задачи осложняется тем, что шаг изменения
индекса равен 2. Решение на Паскале приводится ниже:
program task11_57;
var n : integer; { количество точек }
a : array [1..100] of real; { координаты
точек }
i,j : integer; { индексы массива }
k : real; { кандидат на максимум }
k1 : real; { очередное расстояние }
i1,j1 : integer; { номера наиболее удаленных точек }
begin
writeln('Введите n - количество точек ');
readln(n);
write('Введите ',2*n,' чисел - координат точек ');
i := 1;
while i<2*n do
begin read(a[i],a[i+1]);
i := i+2
end;
{ нахождение радиуса окружности }
k := sqrt(sqr(a[1]-0)+sqr(a[2]-0));
i:= 3;
while i<2*n do
begin k1 := sqrt(sqr(a[i]-0)+sqr(a[i+1]-0));
if k<k1
then k := k1;
i := i+2
end;
write('Минимальный радиус окружности равен ',k);
k := 0; { Наибольшее расстояние между точками равно нулю }
i := 1; i1 := 0; j1 := 0;
while i<2*n-2 do
begin j := i+2;
                                      195

      k := 1;
      for i:=2 to n do
              if b[k]