Работа 3.3 Упр.20 Задание 1 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 20. Дана точка А(х, у). Определить, принадлежит ли она прямоугольнику с вершинами в точках (х1, у1), (x2, у2), (x3, y3), (x4, y4). *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-3/zad1/20 98
Прямоугольник задаётся четырьмя вершинами, поэтому достаточно проверить, лежит ли точка $$A(x,y)$$ внутри его границ. В приведённом решении сначала вводятся координаты четырёх вершин, затем координаты точки.
Далее для каждой стороны проверяется, находится ли точка по вертикали между соответствующими значениями $$y$$, и вычисляется абсцисса точки на стороне по формуле прямой:
$$x = \frac{(x_j-x_i)(y-y_i)}{y_j-y_i}+x_i$$
Если точка лежит между двумя соседними вершинами по оси $$y$$ и её $$x$$ не выходит за границу соответствующей стороны, то точка принадлежит прямоугольнику.
var n:=4;
var xp:=new real[n];
var yp:=new real[n];
Writeln(‘Введите парами координаты четырех вершин’);
for var i:=0 to n-1 do Read(xp[i],yp[i]);
var (x,y):=ReadReal2(‘Введите координаты точки:’);
var (i,j,c):=(0,n-1,False);
while i<n do begin
if ((yp[i]<=y) and (y<yp[j]) or (yp[j]<=y) and (y<yp[i])) and
(x<((xp[j]-xp[i])*(y-yp[i]))/(yp[j]-yp[i])+xp[i]) then c:=not c;
j:=i; i:=i+1;
end;
if c then Writeln(‘принадлежит’)
else Writeln(‘Не принадлежит’)
Алгоритм использует проверку пересечения луча с границами многоугольника: если число пересечений нечётное, точка внутри фигуры, если чётное — снаружи. Для прямоугольника это даёт правильный результат.
Ответ: программа определяет, принадлежит ли точка прямоугольнику, и выводит «принадлежит» или «Не принадлежит».