Точки (х1,у1) и (х2,у2) задают прямую на плоскости, делящую её на две плоскости определить, принадлежат ли точки (х3,у3) и (х4,у4) одной и той же полуплоскости относительно этой прямой-Pascal(Паскаль)

program Project1;
 
var
  LX1, LY1, LX2, LY2, X1, Y1, X2, Y2, A, B, C, Res1, Res2 : Extended;
  S : String;
begin
  repeat
    Writeln('Задайте координаты первой точки на прямой:');
    Write('LX1 = ');
    Readln(LX1);
    Write('LY1 = ');
    Readln(LY1);
    Writeln('Задайте координаты второй точки на прямой:');
    Write('LX2 = ');
    Readln(LX2);
    Write('LY2 = ');
    Readln(LY2);
    Writeln('Задайте координаты первой исследуемой точки:');
    Write('X1 = ');
    Readln(X1);
    Write('Y1 = ');
    Readln(Y1);
    Writeln('Задайте координаты второй исследуемой точки:');
    Write('X2 = ');
    Readln(X2);
    Write('Y2 = ');
    Readln(Y2);
 
    (*Вычисляем коэффициэнты уравнения прямой: AX + BY + C = 0.*)
    A := LY1 - LY2;
    B := LX2 - LX1;
    C := (LX1 * LY2) - (LX2 * LY1);
    (*Вычисляем значение левой части уравнения прямой при подстановке
    координат точек.*)
    Res1 := A * X1 + B * Y1 + C;
    Res2 := A * X2 + B * Y2 + C;
    (*Ответ. Если значения Res1 и Res2 одинакового знака - значит точки лежат
    по одну сторону от прямой. Если разного - то по разные стороны от прямой.*)
    if Res1 * Res2 < 0 then
      Writeln('Точки расположены по разные стороны относительно прямой.')
    else if Res1 * Res2 > 0 then
      Writeln('Точки расположены по одну сторону относительно прямой.')
    else
      Writeln('Одна или обе точки лежат на прямой.')
    ;
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.

Leave a Comment

11 − 8 =