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