Pascal ** карте координаты начала и конца строящегося прямолинейного участка шоссе...

0 голосов
29 просмотров

Pascal
На карте координаты начала и конца строящегося прямолинейного участка шоссе обозначены как (x1; у1 ) и (x2; у2 ). Карьер, откуда можно брать гравий для стройки, имеет координаты (х0; у0), причем х0 не равно х1 Определите минимальное расстояние от строящегося участка шоссе до карьера.


Информатика (47 баллов) | 29 просмотров
0

Смешно... расстояние от точки до прямой в координатах. Стандартная формула.

Дан 1 ответ
0 голосов
Правильный ответ

Type
  Point=record
    x,y:real
    end;

procedure GetPoint(c:char; var A:Point);
  var
    x,y:real;
begin
  Write('Введите координаты x и y точки ',c,': ');
  Read(x,y);
  A.x:=x; A.y:=y
end;

function DistPoint(A,B:Point):real;
begin
  DistPoint:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;

var
  A,B,M:Point;
  d,p,ab,ma,mb:real;
begin
  GetPoint('A',A); GetPoint('B',B); GetPoint('M',M);
  ab:=DistPoint(A,B); ma:=DistPoint(M,A); mb:=DistPoint(M,B);
  if ma>=ab+mb then d:=mb
  else
    if mb>=ma+ab then d:=ma
    else begin
      p:=(ma+mb+ab)/2;
      d:=2*sqrt(p*(p-ab)*(p-ma)*(p-mb))/ab
    end;
  Writeln('Минимальное расстояние составляет ',d)
end.

Тестовое решение:
Введите координаты x и y точки A: -3 -5
Введите координаты x и y точки B: 2 5
Введите координаты x и y точки M: -3 4
Минимальное расстояние составляет 4.02492235949962


(142k баллов)