W
WARRIOR9992005
Здравствуйте товарищи программисты!!!
Помогите пожалуйста, если не сложно, с задачами на Паскале.
Даны координаты вершин треугольника Собственно Ax,Bx.Cx Ay,By,Cy и даны координаты произв точки D Dx,Dy Нужно вычислить входит ли данная точка в тело треугольника...
Я сделал с "Procedure" Преподша говорит мол слишком сложно...помогите пожалуйста...Совсем мозг опух...
вот мой вариант
Помогите пожалуйста, если не сложно, с задачами на Паскале.
Даны координаты вершин треугольника Собственно Ax,Bx.Cx Ay,By,Cy и даны координаты произв точки D Dx,Dy Нужно вычислить входит ли данная точка в тело треугольника...
Я сделал с "Procedure" Преподша говорит мол слишком сложно...помогите пожалуйста...Совсем мозг опух...
вот мой вариант
Код:
program Petrakovski;
var q,w,p,ax,bx,cx,dx,ay,by,cy,dy:real;
per1,per2,per3,per4:real;
procedure Zapoln;
begin
write('Koordinaty A ');
readln(ax, ay);
write('Koordinaty B ');
readln(bx, by);
write('Koordinaty C ');
readln(cx,cy);
write('Koordinaty D ');
readln(dx,dy);
end;
procedure Ploshad(n:integer);
var d1,d2,d3,per:real;
begin
d1:=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
d2:=sqrt((cx-bx)*(cx-bx)+(cy-by)*(cy-by));
d3:=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));
per:=(d1+d2+d3)/2;
per:=sqrt(per*(per-d1)*(per-d2)*(per-d3));
if n=1 then per1:=per else
if n=2 then per2:=per else
if n=3 then per3:=per else
if n=4 then per4:=per;
end;
procedure Zamena(x:integer);
begin
if x=1 then
begin
q:=cx;
W:=cy;
cx:=dx;
cy:=dy;
end else
if x=2 then
begin
q:=ax;
w:=ay;
ax:=dx;
ay:=dy;
end else
if x=3 then
begin
q:=bx;
w:=by;
bx:=dx;
by:=dy;
end;
end;
procedure Sravn;
begin
if per1 = p then
Writeln('Yes') else
Writeln('No'); end;
function Okrug(z:real):real;
var a:integer;
begin
z:=z/10*1000;
a:=round(z);
z:=a/100;
Okrug:=z;
end;
begin
Zapoln;
Ploshad(1);
Zamena(1);
Ploshad(2);
cx:=q;
cy:=w;
p:=per2;
Zamena(2);
Ploshad(3);
p:=p+per3;
ax:=q;
ay:=w;
Zamena(3);
Ploshad(4);
p:=p+per4;
p:=Okrug(p);
per1:=Okrug(per1);
Sravn;
readln;
end.