0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 4
1

Расстояние от точки до стороны треугольника

28.06.2009, 21:37. Показов 10907. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, у меня возникла проблема с следующей задачей. Я пробывал решал ее с помощю процедур и формулы площади через полупериметр, однако тут же застрял, и что еще хуже - потерял программу. Завтро ее нужно сдать, а времени почти нет.
Прошу помощи.
P.S. Если тема неверно оформленна, прошу прощения.

Заданы координаты вершин треугольника и координаты некоторой точки внутри его. Определите расстояние от данной точки к ближайшей стороне треугольника. При решении задачи используйте процедуру пользователя и учитывайте то обстоятельство, что площадь треугольника может быть вычислена разными формулами.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2009, 21:37
Ответы с готовыми решениями:

Найти расстояние от данной точки до ближайшей стороны треугольника.
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближай- шей стороны...

Вычислить стороны прямоугольного треугольника
Вычислить стороны прямоугольного треугольника, если известны его площадь и периметр.

Найти расстояние от заданной точки до заданного треугольника на плоскости
Здравствуйте, Друзья. У меня к вам просьба огромная. Задача такая:Найти расстояние от заданной точки до заданного треугольника на...

6
Почетный модератор
 Аватар для Puporev
64306 / 47603 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.06.2009, 21:48 2
Вычислите площади трех треугольников, образованных этой точкой и двумя вершинами по формуле Герона. Найдите высоты в этих треугольниках, опущенные на стороны треугольника из формулы S=a*h/2. Какая высота меньше, это и есть искомое расстояние.
1
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 4
28.06.2009, 23:22  [ТС] 3
Да простят меня боги за стиль и правильность вабще, но вот что я написал. Но ответ у меня всегда 0. Где ошибка скажите пожалуйста.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
program gl;
uses crt;
 
var i,j:integer; mi,p1,p2,p3,x1,y1,x2,y2,x3,y3,x4,y4,a,b,c,h1,h2,h3,s1,s2,s3,a1,b1,c1:real;
procedure dl;
begin
a:=sqrt(sqr(x2-x1)+sqr(y2-y1));
b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
c:=sqrt(sqr(x1-x3)+sqr(y1-y3));
end;
Procedure  s;
begin
a1:=sqrt(sqr(x4-x1)+sqr(y4-y1));
b1:=sqrt(sqr(x4-x2)+sqr(y4-y2));
c1:=sqrt(sqr(x4-x3)+sqr(y4-y3));
p1:=(a+a1+b1)/2;
p2:=(b+b1+c1)/2;
p3:=(c+c1+a1)/2;
s1:=sqrt(p1*(p1-a)*(p1-b1)*(p1-a1));
s2:=sqrt(p2*(p2-b)*(p2-b1)*(p2-c1));
s3:=sqrt(p3*(p3-c)*(p3-c1)*(p3-a1));
end;
procedure h;
begin
h1:=2*s1/a;
h2:=2*s2/b;
h3:=2*s3/c;
end;
procedure min;
begin
h1:=mi;
if (h2<h1) and (h2<h3) then
h2:=mi;
if (h3<h1) and (h3<h2) then
h3:=mi;
end;
BEGIN
readln(x1,y1,x2,y2,x3,y3,x4,y4);
writeln(mi:6:2);
readln;
 
        
END.
Добавлено через 48 минут 30 секунд
Ой блин!
0
Почетный модератор
 Аватар для Puporev
64306 / 47603 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 11:05 4
Я бы решил так. Это самый простой вариант. Можно еще организовать, чтоб показывало какя высота на какую сторону, можно вообще это все графически показать, но я как понял, Вам нужно только конкретное задание выполнить.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
uses crt;
const t=0.00001;{погрешность вычислений при сравнении 2х вещественных чисел}
type Point=record{точку представим как запись с полями-координатами}
           x,y:real;
           end;
function Dlina(a,b:Point):real;{определение длины линий}
begin
Dlina:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
end;
function Plosh(a,b,c:Point):real;{определение площади треугольника}
var p:real;
begin
p:=(Dlina(a,b)+Dlina(b,c)+Dlina(a,c))/2;
Plosh:=(sqrt(p*(p-Dlina(a,b))*(p-Dlina(b,c))*(p-Dlina(a,c))));
end;
function Proverka(a,b,c,d:Point):boolean;{проверка, попадает ли точка в треугольник}
var s,s1,s2,s3:real;
begin
s:=Plosh(a,b,c);{площадь всего треугольника}
s1:=Plosh(a,b,d);{площади внутренних треугольников}
s2:=Plosh(a,c,d);
s3:=Plosh(b,c,d);
if abs((s1+s2+s3)-s)<t then Proverka:=true{если сумма равна общей, с учетом точности, то внутри}
else Proverka:=false;
end;
function H(a,b,d:Point):real;{вычисление высоты}
begin
H:=2*Plosh(a,b,d)/Dlina(a,b);
end;
function Min(a,b,c:real):real;{вычисление меньшей высоты}
var mn:real;
begin
mn:=a;
if b<mn then mn:=b;
if c<mn then mn:=c;
Min:=mn;
end;
var a,b,c,d:Point;
begin
clrscr;
repeat
writeln('Введите координаты X,Y вершин треугольника:');
write('A:  ');readln(a.x,a.y);
write('B:  ');readln(b.x,b.y);
write('C:  ');readln(c.x,c.y);
if  Plosh(a,b,c)<t then writeln('Это не треугольник! Повторите ввод.');
until Plosh(a,b,c)>t;
repeat
write('Ведите координаты X,Y точки внутри треугольника D:  ');
readln(d.x,d.y);
if not Proverka(a,b,c,d) then writeln('Точка D не лежит внутри треугольника! Повторите ввод.');
until Proverka(a,b,c,d);
write('Расстояние до ближайшей стороны=',Min(H(a,b,d),H(a,c,d),H(b,c,d)):0:2);
readln
end.
1
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 4
29.06.2009, 19:05  [ТС] 5
Сдал, было пару ошибок, но в общем вот. Кому надо - пользуйтесь.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
program gl;
uses crt;
var i,j:integer;
mi,p1,p2,p3,x1,y1,x2,y2,x3,y3,x4,y4,a,b,c,h1,h2,h3,s1,s2,s3,a1,b1,c1:real;
procedure dl;
begin
a:=sqrt(sqr(x2-x1)+sqr(y2-y1));    {Вычисление сторон основного треугольника}
b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
c:=sqrt(sqr(x1-x3)+sqr(y1-y3));
end;
Procedure  s;
begin
a1:=sqrt(sqr(x4-x1)+sqr(y4-y1));   {Вычисление сторон треугольников образованых 
b1:=sqrt(sqr(x4-x2)+sqr(y4-y2));      вершинами и точкой}
c1:=sqrt(sqr(x4-x3)+sqr(y4-y3));
p1:=(a+a1+b1)/2;                      {нахождение каждого полупериметра}
p2:=(b+b1+c1)/2;
p3:=(c+c1+a1)/2;
s1:=sqrt(p1*(p1-a)*(p1-b1)*(p1-a1));    {нахождение каждой площади}
s2:=sqrt(p2*(p2-b)*(p2-b1)*(p2-c1));
s3:=sqrt(p3*(p3-c)*(p3-c1)*(p3-a1));
end;
procedure h;
begin
h1:=2*s1/a;         {Нахождение каждого растояния до стороны}
h2:=2*s2/b;
h3:=2*s3/c;
end;
procedure min;
begin
mi:=h1;                   {Сравнение высот}
if h2<h1 then
mi:=h2;
if h3<h2 then
mi:=h3;
end;
BEGIN
clrscr;
readln(x1,y1,x2,y2,x3,y3,x4,y4);
dl;s;h;min;
writeln(mi:6:2);
readln;
 
 
END.
0
Почетный модератор
 Аватар для Puporev
64306 / 47603 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
29.06.2009, 19:10 6
Кому надо - пользуйтесь.
Ну и что будет делать Ваша программа, если все точки будут лежать на одной прямой, или вообще пользователь три раза введет одни и те же координаты. А что будет если точка не будет в пределах треугольника?
Мне кажется Ваша программа спросом пользоваться не будет.
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 4
29.06.2009, 19:26  [ТС] 7
К сожелению, эта программа написана для выполнения лабораторной и не более.
А если у людей возникнет желание что-то добавить, исправить - это их право.
Дописать строчку чтобы не повторялись координаты или координаты случайным порядком или грфически отобразить треугольники - это уже дополнение к базе.

Просто когда я искал такую программу в интернете - я не находил вообще ничего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2009, 19:26
Помогаю со студенческими работами здесь

Найти расстояние от точки до ближайшей стороны треугольника
Даны координаты вершин треугольника и координаты некоторой точки М внутри него. Испрользуя процедуру ( или функцию) подсчета расстояния от...

Найти расстояние от данной точки до ближайшей стороны треугольника
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны...

Найти расстояние от данной точки внутри треугольника до ближайшей его стороны
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Составить программу, находящую расстояние от данной точки до...

Найти расстояние от данной точки до ближайшей стороны треугольника, заданного координатами вершин
Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние от данной точки до ближайшей стороны...

Длина стороны треугольника А, периметр равен P. длины двух других сторон равны между со6ой. Найти эти стороны
Длина стороны треугольника А, периметр равен P. длины двух других сторон равны между со6ой. Найти эти стороны


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru