Определить пересекаются ли два отрезка, заданные координатами своих концов- Pascal(Паскаль)

var
 x1,x2,x3,x4,y1,y2,y3,y4,r:integer;
 k1,k2,b1,b2,x,y:real;
begin
 k1:=0;
 k2:=0;
 read(x1,y1);
 read(x2,y2);
 read(x3,y3);
 read(x4,y4);
 if x1>=x2 then
  begin
   r:=x1;
   x1:=x2;
   x2:=r;
   r:=y1;
   y1:=y2;
   y2:=r;
  end;
 if x3>=x4 then
  begin
   r:=x3;
   x3:=x4;
   x4:=r;
   r:=y3;
   y3:=y4;
   y4:=r;
  end;
 if y2=y1 then k1:=0
 else k1:=(y2-y1)/(x2-x1);
 if y3=y4 then k2:=0
 else k2:=(y4-y3)/(x4-x3);
 if k1=k2 then write('No')
 else
  begin
   b1:=y1-k1*x1;
   b2:=y3-k2*x3;
   x:=(b2-b1)/(k1-k2);
   if (x<=x2) and (x>=x1) or (x<=x4) and (x>=x3)
     then write('Yes')
     else write('No');
  end;
end.

Leave a Comment

− 2 = 6