Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вот, получите:
Код:
Var
Xb1,Yb1,Xb2,Yb2,Xb3,Yb3,Xs1,Ys1,Xs2,Ys2,Xs3,Ys3:real;
Function One_Side(xl1,yl1,xl2,yl2,xp1,yp1,xp2,yp2:real):Boolean;
Procedure Line(x1,y1,x2,y2:real; var al:real; var bl:real);
begin
al:=(y2-y1)/(x2-x1);
bl:=-x1*(y2-y1)/(x2-x1)+y1;
end;
Function Y(x1,y1,x2,y2,x:real):real;
var a,b:real;
begin
Line(x1,y1,x2,y2,a,b);
Y:=a*x+b;
end;
Begin
if xl1=xl2 then
One_Side:=(xp1-xl1)*(xp2-xl1)>=0
else
if yl1=yl2 then
One_Side:=(yp1-yl1)*(yp2-yl1)>=0
else
One_Side:=(yp1-Y(xl1,yl1,xl2,yl2,xp1))*(yp2-Y(xl1,yl1,xl2,yl2,xp2))>=0;
End;
Function Square(x1,y1,x2,y2,x3,y3:real):real;
begin
Square:=0.5*Abs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3));
end;
Begin
Writeln('Small triangle:');
Write('x1 = ');
Readln(Xs1);
Write('y1 = ');
Readln(Ys1);
Write('x2 = ');
Readln(Xs2);
Write('y2 = ');
Readln(Ys2);
Write('x3 = ');
Readln(Xs3);
Write('y3 = ');
Readln(Ys3);
Writeln;
Writeln('Big triangle:');
Write('x1 = ');
Readln(Xb1);
Write('y1 = ');
Readln(Yb1);
Write('x2 = ');
Readln(Xb2);
Write('y2 = ');
Readln(Yb2);
Write('x3 = ');
Readln(Xb3);
Write('y3 = ');
Readln(Yb3);
if One_Side(Xb1,Yb1,Xb2,Yb2,Xs1,Ys1,Xs2,Ys2) and
One_Side(Xb1,Yb1,Xb2,Yb2,Xs1,Ys1,Xs3,Ys3) and
One_Side(Xb1,Yb1,Xb2,Yb2,Xs2,Ys2,Xs3,Ys3) and
One_Side(Xb1,Yb1,Xb3,Yb3,Xs1,Ys1,Xs2,Ys2) and
One_Side(Xb1,Yb1,Xb3,Yb3,Xs1,Ys1,Xs3,Ys3) and
One_Side(Xb1,Yb1,Xb3,Yb3,Xs2,Ys2,Xs3,Ys3) and
One_Side(Xb2,Yb2,Xb3,Yb3,Xs1,Ys1,Xs2,Ys2) and
One_Side(Xb2,Yb2,Xb3,Yb3,Xs1,Ys1,Xs3,Ys3) and
One_Side(Xb2,Yb2,Xb3,Yb3,Xs2,Ys2,Xs3,Ys3)
then
Writeln('Yes! S = ',Square(Xb1,Yb1,Xb2,Yb2,Xb3,Yb3)-Square(Xs1,Ys1,Xs2,Ys2,Xs3,Ys3):0:3)
else
Writeln('No!');
Readln
End.
|