Для того чтобы определить, находятся ли три точки на одной прямой, можно воспользоваться понятием коллинеарности. Три точки A(x1, y1), B(x2, y2) и C(x3, y3) будут коллинеарными (то есть будут лежать на одной прямой), если площадь треугольника, образованного этими точками, равна нулю. Это можно проверить с помощью определителя:
[
\text{Определитель} = x1 \cdot (y2 - y3) + x2 \cdot (y3 - y1) + x3 \cdot (y1 - y2)
]
Если определитель равен нулю, то точки коллинеарны.
После того как мы определили, что точки коллинеарны, нам нужно выяснить, какая из точек лежит внутри отрезка, образованного двумя другими точками. Это можно сделать, проверив, удовлетворяет ли одна из точек условию нахождения между двумя другими точками на числовой оси. Это условие можно выразить следующим образом:
Точка B лежит между A и C, если выполняется:
- ((x1 \leq x2 \leq x3) \lor (x3 \leq x2 \leq x1)) и
- ((y1 \leq y2 \leq y3) \lor (y3 \leq y2 \leq y1)).
Аналогично можно проверить для других комбинаций точек.
Теперь напишем программу на Pascal, которая выполняет описанные действия:
program CollinearPoints;
uses SysUtils;
function IsCollinear(x1, y1, x2, y2, x3, y3: Integer): Boolean;
begin
Result := (x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2) = 0);
end;
function IsBetween(val, end1, end2: Integer): Boolean;
begin
Result := ((end1