Определить попадает ли точка внутрь треугольника - Turbo Pascal (33728)

Формулировка задачи:

Помогите пожалуйстаааа!!! Даны действительные числа x1, y1, x2, y2, x3, y3. Находится ли точка с координатами (x,y) внутри треугольника с вершинами (x1, y1), (x2, y2), (x3, y3)? Подсказка: соедините точку (x,y) с вершинами треугольника; рассмотрите площади четырех треугольников. Определите функции для вычисления длины отрезка и площади треугольника и используйте эти функции. Подсказка: соедините точку (x,y) с вершинами треугольника; рассмотрите площади четырех треугольников. Определите функции для вычисления длины отрезка и площади треугольника и используйте эти функции. Добавлено через 32 минуты ну хоть маааааленькую идею((((


textual

Код к задаче: «Определить попадает ли точка внутрь треугольника - Turbo Pascal (33728)»

uses crt;
const t=0.001;
{определение длины стороны}
function Dlina(x1,y1,x2,y2:real):real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
{определение площади по Герону}
function Plosh(a,b,c:real):real;
var p:real;
begin
p:=(a+b+c)/2;
Plosh:=(sqrt(p*(p-a)*(p-b)*(p-c)));
end;
 
var x1,y1,x2,y2,x3,y3,x,y,a,b,c,xa,xb,xc,s,s1,s2,s3:real;
begin
clrscr;
repeat
writeln('Введите координаты X,Y вершин треугольника:');
writeln('1:  ');readln(x1,y1);
writeln('2:  ');readln(x2,y2);
writeln('3:  ');readln(x3,y3);
a:=Dlina(x1,y1,x2,y2);
b:=Dlina(x2,y2,x3,y3);
c:=Dlina(x1,y1,x3,y3);
{если площадь=0, не треугольник}
if  Plosh(a,b,c)<t then writeln('Это не треугольник! Повторите ввод.');
until Plosh(a,b,c)>=t;
writeln('Ведите координаты X,Y точки внутри треугольника:  ');
readln(x,y);
{вычислим длины сторон от точки до вершин треугольника}
xa:=Dlina(x1,y1,x,y);
xb:=Dlina(x2,y2,x,y);
xc:=Dlina(x3,y3,x,y);
{проверка внутри или нет}
s:=Plosh(a,b,c);{площадь данного треугольника}
s1:=Plosh(a,xa,xb);{1 маленький}
s2:=Plosh(b,xb,xc);{2}
s3:=Plosh(c,xc,xa);{3}
if abs((s1+s2+s3)-s)<t then writeln('Точка D лежит внутри треугольника!')
{если площади равны с заданной точностью}
else writeln('Точка D не лежит внутри треугольника!');{не равны}
readln
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

13   голосов, оценка 3.769 из 5

Источник