Показать сообщение отдельно
Старый 14.01.2015, 12:20   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070