Консультация № 109666
16.11.2007, 11:23
0.00 руб.
0 1 1
расстояние от точки до отрезка(!), программа на паскале

Обсуждение

давно
Старший Модератор
31795
6196
16.11.2007, 12:53
общий
это ответ
Здравствуйте, Морозов Павлик!

Смотрите приложение.
Отрезок и точка образуют треугольник.
Вычисляется его площадь и потом его высота.
Если точка принадлежит отрезку выводится "0", иначе растояние до отрезка.
Удачи!

Приложение:
program q109666;vara,b,c,p,s:real;x1,x2,x3,y1,y2,y3:integer;function L(a,b,c,d:integer):real; begin L:=sqrt(abs(a-b)*abs(a-b)+abs(c-d)*abs(c-d)); end;begin {вводим координаты отрезка} write(‘x1:‘);readln(x1); write(‘y1:‘);readln(y1); write(‘x2:‘);readln(x2); write(‘y2:‘);readln(y2); {вводим координаты точки} write(‘x3:‘);readln(x3); write(‘y3:‘);readln(y3); {считаем длины всех отрезки} a:=L(x1,x2,y1,y2); b:=L(x2,x3,y2,y3); c:=L(x1,x3,y1,y3); {считаем площадь образованного треугольника и его высоту} p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); p:=2*s/a; {вывод растояния} write(‘r:=‘); {вывод растояния если точка не лежит на одной прямой с отрезком или пренадлежит отрезку} if (p<>0)or((a>=b)and(a>=c)) then writeln(p) {если точка лежит на одной прямой с отрезком выводим наименьшее растояние} else if b>a then writeln(c) else if c>a then writeln(b);end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа