Работа 3.6 Упр.22 ГДЗ Семакин 10 класс (Информатика)
а) минимальный радиус окружности с центром в начале координат, которая содержит все точки;
б) внутренний и внешний радиусы кольца с центром в начале координат, которое содержит все точки;
в) номера точек, которые могут являться вершинами квадрата;
г) номера точек, которые могут являться вершинами равнобедренного треугольника;
д) номера самых удаленных и наименее удаленных друг от друга точек;
е) три точки, которые являются вершинами треугольника, для которого разность точек вне его и внутри является минимальной.
Пусть в массиве хранятся координаты точек $$x_1, y_1, x_2, y_2, \dots, x_k, y_k$$. Тогда для каждой точки нужно найти квадрат расстояния до начала координат:
$$r_i^2 = x_i^2 + y_i^2$$
Если среди всех таких значений найти минимальное и максимальное, то:
- минимальный радиус окружности, содержащей все точки, равен $$\sqrt{r_{\max}^2}$$;
- внутренний радиус кольца равен $$\sqrt{r_{\min}^2}$$;
- внешний радиус кольца равен $$\sqrt{r_{\max}^2}$$.
В приведённом решении вычисляются именно квадраты расстояний, чтобы не выполнять лишние извлечения корня в цикле.
const
n = 10; // предельное количество точек
var
a: array[1..2 * n] of real;
x, y, lmax, lmin: real;
i, j, k: integer;
begin
writeln(‘Введите количество точек (не более ‘, n, ‘)’);
readln(k);
writeln(‘Вводите координаты точек (x,y) попарно’);
lmax := 0;
lmin := 1e10;
for i := 1 to k do
begin
j := 2 * i — 1;
read(a[j], a[j + 1]);
l := sqr(a[j]) + sqr(a[j + 1]); // квадраты расстояния до точки
if lmax < l then lmax := l;
if lmin > l then lmin := l
end;
writeln;
writeln(‘Все точки находятся внутри кольца с радиусами ‘, sqrt(lmin), ‘, ‘, sqrt(lmax))
end.
В этом фрагменте программа находит только радиусы кольца. Для остальных пунктов задания нужно дополнительно сравнивать расстояния между точками и проверять геометрические свойства фигур.
Для пункта д) нужно перебрать все пары точек и найти:
- максимальное расстояние — самые удалённые точки;
- минимальное расстояние — наименее удалённые точки.
Для пункта е) нужно перебрать все тройки точек, проверить, образуют ли они треугольник, и выбрать ту тройку, для которой разность числа точек внутри и вне треугольника минимальна.
Ответ: программа находит минимальный и максимальный радиусы окружностей, содержащих все точки; для остальных пунктов требуется дополнительный перебор пар и троек точек.