Написать программу для паскаля, которая по трем парам (х,у) введенных с клавиатуры координат определит, находится ли начало координат внутри треугольника, заданного этими тремя вершинами
program CheckOriginInsideTriangle; var x1, y1, x2, y2, x3, y3, x, y: Integer; a, b, c, p: Real; begin writeln('Введите координаты первой вершины треугольника (x1 y1): '); readln(x1, y1); writeln('Введите координаты второй вершины треугольника (x2 y2): '); readln(x2, y2); writeln('Введите координаты третьей вершины треугольника (x3 y3): '); readln(x3, y3); writeln('Введите координаты точки (x y), чтобы проверить, находится ли начало координат внутри треугольника: '); readln(x, y); a := sqrt(sqr(x2 - x1) + sqr(y2 - y1)); b := sqrt(sqr(x3 - x2) + sqr(y3 - y2)); c := sqrt(sqr(x1 - x3) + sqr(y1 - y3)); p := (a + b + c) / 2; if abs(sqrt(p * (p - a) * (p - b) * (p - c)) - (abs((x1 - x)*(y2 - y1) - (x2 - x1)*(y1 - y))) - (abs((x2 - x)*(y3 - y2) - (x3 - x2)*(y2 - y))) - (abs((x3 - x)*(y1 - y3) - (x1 - x3)*(y3 - y))) < 0.0001) then writeln('Точка (', x, ',', y, ') находится внутри треугольника') else writeln('Точка (', x, ',', y, ') находится вне треугольника'); end.
Программа запрашивает координаты трех вершин треугольника и координаты точки, для которой нужно определить, находится ли начало координат внутри этого треугольника. Сначала программа находит площадь треугольника по формуле Герона, затем сравнивает сумму площадей трех треугольников, образованных точкой и вершинами данного треугольника, с площадью исходного треугольника. Если разница между этими значениями меньше определенного эпсилон, то точка находится внутри треугольника.
Программа на Pascal:
program CheckOriginInsideTriangle;var
x1, y1, x2, y2, x3, y3, x, y: Integer;
a, b, c, p: Real;
begin
writeln('Введите координаты первой вершины треугольника (x1 y1): ');
readln(x1, y1);
writeln('Введите координаты второй вершины треугольника (x2 y2): ');
readln(x2, y2);
writeln('Введите координаты третьей вершины треугольника (x3 y3): ');
readln(x3, y3);
writeln('Введите координаты точки (x y), чтобы проверить, находится ли начало координат внутри треугольника: ');
readln(x, y);
a := sqrt(sqr(x2 - x1) + sqr(y2 - y1));
b := sqrt(sqr(x3 - x2) + sqr(y3 - y2));
c := sqrt(sqr(x1 - x3) + sqr(y1 - y3));
p := (a + b + c) / 2;
if abs(sqrt(p * (p - a) * (p - b) * (p - c)) - (abs((x1 - x)*(y2 - y1) - (x2 - x1)*(y1 - y))) - (abs((x2 - x)*(y3 - y2) - (x3 - x2)*(y2 - y))) - (abs((x3 - x)*(y1 - y3) - (x1 - x3)*(y3 - y))) < 0.0001) then
writeln('Точка (', x, ',', y, ') находится внутри треугольника')
else
writeln('Точка (', x, ',', y, ') находится вне треугольника');
end.
Программа запрашивает координаты трех вершин треугольника и координаты точки, для которой нужно определить, находится ли начало координат внутри этого треугольника. Сначала программа находит площадь треугольника по формуле Герона, затем сравнивает сумму площадей трех треугольников, образованных точкой и вершинами данного треугольника, с площадью исходного треугольника. Если разница между этими значениями меньше определенного эпсилон, то точка находится внутри треугольника.