Найти номер такой точки и вершину r, чтобы окружность с центром в этой точке содержала все n точек - Free Pascal

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

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

прошу помочь со следующей задачей: Даны значения двух вещественных массивов х и у размером n (пусть будет 10). рассматривая пары значений (х1,у1),..(хн,ун) ка координаты точек плоскости, найти: номер такой точки и вершину r, чтобы окружность с центром в этой точке содержала все n точек, и при то радиус к её был наименьшим среди радиусов всех таких окружностей. заранее благодарен.

Решение задачи: «Найти номер такой точки и вершину r, чтобы окружность с центром в этой точке содержала все n точек»

textual
Листинг программы
const
   n = 10;
var
   x, y : array[1 .. n] of integer;
   i, j, index : integer;
   min, max, dist : double;
 
begin
   randomize;
   for i := 1 to n do
   begin
      x[i] := random(50) + 20;
      y[i] := random(50) + 20;
      write('(', x[i], ' ', y[i], ') ');
   end;
   writeln;
 
   min := maxlongint;
   index := 0;
 
   for i := 1 to n do
   begin
      max := 0;
      for j := 1 to n do
         if i = j then continue
         else
         begin
            dist := sqrt(sqr(x[i] - x[j]) + sqr(y[i] - y[j]));
            if dist > max then max := dist;
         end;
         // writeln('i = ', i, ' max = ', max); // для теста
 
      if max < min then
      begin
         min := max;
         index := i;
      end;
   end;
 
   writeln('Результат : точка #', index, ' ', x[index], ' ', y[index]);
 
end.

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

  1. Объявлены переменные: n - количество точек (10); x, y - массивы координат точек (array[1 .. n] of integer); i, j, index - индексы для перебора точек и поиска минимального расстояния (integer); min, max, dist - переменные для хранения минимального расстояния, максимального расстояния и расстояния между точками (double).
  2. Заполняются массивы координат точек случайными значениями от 20 до 70 для x и от 20 до 70 для y.
  3. Выводятся координаты всех точек.
  4. Инициализируются переменные min и max как максимальные значения, которые могут быть (maxlongint).
  5. Перебираются все точки от 1 до n. Для текущей точки перебираются все остальные точки от 1 до n (исключая текущую точку). Вычисляется расстояние между текущей точкой и каждой из остальных точек.
  6. Если расстояние между текущей точкой и другой точкой меньше текущего значения min, то обновляются значения min и index.
  7. Если текущая точка имеет меньшее значение max, чем предыдущая точка с минимальным расстоянием, то обновляются значения max и index.
  8. Выводится результат - номер точки с минимальным расстоянием и ее координаты.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы