Работа 3.3 Упр.16 Задание 1 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 16. Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (X1, у1), (х2, У2), (х3,y3). *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-3/zad1/16 98
Пусть даны вершины треугольника $$X_1(x_1,y_1),\; X_2(x_2,y_2),\; X_3(x_3,y_3)$$ и точка $$A(x,y)$$.
Сначала проверим, существует ли треугольник. Для этого вычислим
$$S=(x_1-x_3)(y_2-y_3)-(x_2-x_3)(y_1-y_3).$$
Если $$S=0,$$ то вершины лежат на одной прямой, значит треугольник не существует.
Если $$S\neq 0,$$ вычислим площади (с точностью до знака) треугольников с точкой $$A$$:
$$A=(x-x_3)(y_2-y_3)-(x_2-x_3)(y-y_3),$$
$$B=(x_1-x_3)(y-y_3)-(x-x_3)(y_1-y_3).$$
Точка принадлежит треугольнику, если все три величины $$S,\;A,\;B$$ одного знака или равны нулю на границе:
$$\bigl(S<0 \land S\le A \land A\le 0 \land S\le B \land B\le 0\bigr)\ \lor$$
$$\bigl(S>0 \land S\ge A \land A\ge 0 \land S\ge B \land B\ge 0\bigr).$$
var x1,x2,x3,y1,y2,y3,x,y,A,B,S: integer;
begin
read(x1,x2,x3,y1,y2,y3,x,y);
S:=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3);
if S=0 then writeln(‘Треугольник не существует…’)
else
begin
A:=(x-x3)*(y2-y3)-(x2-x3)*(y-y3);
B:=(x1-x3)*(y-y3)-(x-x3)*(y1-y3);
if ((S<0) and (S<=A) and (A<=0) and (S<=B) and (B<=0)) or
((S>0) and (S>=A) and (A>=0) and (S>=B) and (B>=0)) then
writeln(‘Принадлежит’)
else
writeln(‘Не принадлежит’);
end;
end.
Ответ
Программа проверяет существование треугольника и принадлежность точки $$A(x,y)$$ треугольнику по знакам выражений $$S,\;A,\;B$$.