Даны три точки A(x1,y1) B(x2,y2) и C(x3,y3). Определите,будут ли они расположены на одной прямой. Напишите алгоритм на паскале . Срочно надо
Answers & Comments
magica
Var x1, y1, x2, y2, x3, y3, a, b, c, p, s: real; begin readln(x1, y1, x2, y2, x3, y3); a:=sqrt(sqr(abs(x1-x2))+sqr(abs(y1-y2))); b:=sqrt(sqr(abs(x2-x3))+sqr(abs(y2-y3))); c:=sqrt(sqr(abs(x1-x3))+sqr(abs(y1-y3))); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); if s=0 then write('Лежат на одной прямой') else write('Не лежат на одной прямой'); end.
Объясняю. Образуем из этих трёх точек треугольник. a, b, c - стороны треугольника. p - полу-периметр треугольника. s - площадь треугольника. Площадь вычисляется по формуле Герона. Если площадь равна нуля, значит точки лежат на одной прямой. Если нет - не лежат.
Answers & Comments
x1, y1, x2, y2, x3, y3, a, b, c, p, s: real;
begin
readln(x1, y1, x2, y2, x3, y3);
a:=sqrt(sqr(abs(x1-x2))+sqr(abs(y1-y2)));
b:=sqrt(sqr(abs(x2-x3))+sqr(abs(y2-y3)));
c:=sqrt(sqr(abs(x1-x3))+sqr(abs(y1-y3)));
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
if s=0 then write('Лежат на одной прямой') else write('Не лежат на одной прямой');
end.
Объясняю. Образуем из этих трёх точек треугольник. a, b, c - стороны треугольника. p - полу-периметр треугольника. s - площадь треугольника. Площадь вычисляется по формуле Герона. Если площадь равна нуля, значит точки лежат на одной прямой. Если нет - не лежат.