Найти расстояние от данной точки до ближайшей стороны треугольника. - Pascal
Формулировка задачи:
Даны координаты вершин треугольника и координаты некоторой
точки внутри него. Найти расстояние от данной точки до ближай-
шей стороны треугольника. При определении расстояний учесть,
что площадь треугольника может вычисляться разными способами
- через три его стороны или через основание и высоту.
Помогите(язык паскаль)
Решение задачи: «Найти расстояние от данной точки до ближайшей стороны треугольника.»
textual
Листинг программы
const t=0.001;{точность сравнения вычисленных вещественных чисел} {функция определения площади треугольника по координатам вершин} function plosh(x1,y1,x2,y2,x3,y3:real):real; begin plosh:=abs((x1-x3)*(y2-y3)-(x2-x3)*(y1-y3))/2; end; {функция проверки лежит ли точка в треугольнике} function prin(x1,y1,x2,y2,x3,y3,tx,ty:real):boolean; begin prin:=abs(plosh(x1,y1,x2,y2,x3,y3)-plosh(x1,y1,x2,y2,tx,ty) -plosh(x1,y1,tx,ty,x3,y3)-plosh(tx,ty,x2,y2,x3,y3))<t end; {функция определения высоты} function vys(x1,y1,x2,y2,tx,ty:real):real; begin vys:=2*plosh(x1,y1,x2,y2,tx,ty)/sqrt(sqr(x1-x2)+sqr(y1-y2)); end; var ax,ay,bx,by,cx,cy,tx,ty,d:real; begin repeat writeln('Введите координаты вершин треугольника'); readln(ax,ay,bx,by,cx,cy); if plosh(ax,ay,bx,by,cx,cy)<t then writeln('Треугольник вырожденный, повторите ввод') until plosh(ax,ay,bx,by,cx,cy)>t; repeat writeln('Введите координаты точки внутри треугольника:'); readln(tx,ty); if not prin(ax,ay,bx,by,cx,cy,tx,ty) then writeln('Точка вне треугольника, повторите ввод') until prin(ax,ay,bx,by,cx,cy,tx,ty); writeln('Расстояние от точки до стороны АВ=',vys(ax,ay,bx,by,tx,ty):0:2); writeln('Расстояние от точки до стороны АC=',vys(ax,ay,cx,cy,tx,ty):0:2); writeln('Расстояние от точки до стороны ВC=',vys(bx,by,cx,cy,tx,ty):0:2); if vys(ax,ay,bx,by,tx,ty)<vys(ax,ay,cx,cy,tx,ty)then d:=vys(ax,ay,bx,by,tx,ty)else d:=vys(ax,ay,cx,cy,tx,ty); if vys(bx,by,cx,cy,tx,ty)<d then d:=vys(bx,by,cx,cy,tx,ty); writeln('Наименьшее расстояние=',d:0:2); end.
Объяснение кода листинга программы
- Объявление константы
t
с значением0.001
для точности сравнения вычисленных вещественных чисел. - Определение функции
plosh
для вычисления площади треугольника по его координатам. - Определение функции
prin
для проверки, лежит ли заданная точка внутри треугольника. - Определение функции
vys
для вычисления высоты треугольника из заданной точки. - Объявление переменных
ax
,ay
,bx
,by
,cx
,cy
,tx
,ty
иd
как вещественных чисел. - Запрос у пользователя координат вершин треугольника.
- Проверка на вырожденность треугольника и запрос нового ввода, если треугольник вырожденный.
- Запрос у пользователя координат точки внутри треугольника.
- Проверка, лежит ли введенная точка внутри треугольника и запрос нового ввода, если точка не лежит внутри треугольника.
- Вывод расстояния от точки до стороны AB.
- Вывод расстояния от точки до стороны AC.
- Вывод расстояния от точки до стороны BC.
- Определение наименьшего расстояния и его вывод.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д