С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/41: Рейтинг темы: голосов - 41, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 30

Выяснить, существует ли треугольник с координатами вершин A(x1,y1), B(x2,y2), C(x3,y3), если да, то найти его площадь

20.06.2012, 04:21. Показов 7623. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выяснить, существует ли треугольник с координатами вершин A(x1,y1), B(x2,y2), C(x3,y3), если да, то найти его площадь.

Помогите решить, пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2012, 04:21
Ответы с готовыми решениями:

Выяснить, существует ли треугольник с заданными координатами вершин, если да, то найти его площадь
Выяснить, существует ли треугольник с координатами вершин A(x1,y1), B(x2,y2), C(x3,y3), если да, то найти его площадь. Помогите...

Выяснить, существует ли треугольник с длинами сторон А, В, С. Если да, то найти его площадь
Выяснить, существует ли треугольник с длинами сторон А, В, С. Если да, то найти его площадь

Выяснить, существует ли треугольник с координатами вершин А(х1, у1) В(х2, у2) С(х3, у3)
Выяснить, существует ли треугольник с координатами вершин А(х1, у1) В(х2, у2) С(х3, у3) Помоги пожалуйста написать программу

5
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
20.06.2012, 11:14
Visual Basic
1
F = Abs((a.x - c.x) * (b.y - c.y) - (b.x - c.x) * (a.y - c.y)) / 2
Дальше продолжать?
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
20.06.2012, 12:24
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Странное начало... Мне кажется, начинать нужно с длин сторон, а далее - формула Герона:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Triangle(x1 as double, y1 as double, _
                 x2 as double, y2 as double, _
                 x3 as double, y3 as double)
Dim d1 As double
Dim d2 As double
Dim d3 As double
Dim p  As double
     '::: Длины сторон
     d1=sqr((x1-x2)^2+(y1-y2)^2)
     d2=sqr((x1-x3)^2+(y1-y3)^2)
     d3=sqr((x2-x3)^2+(y2-y3)^2)
     '::: Проверка
     If ((d1+d2) > d3) And _
        ((d1+d3) > d2) And _
        ((d2+d3) > d1) Then
        Debug.print "Треугольник существует"
        p=0.5*(d1+d2+d3)
        Debug.print "Площадь="+cstr(sqr(p*(p-d1)*(p-d2)*(p-d3)))
     Else
        Debug.print "Треугольник НЕ существует"
     End if
End sub
1
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
20.06.2012, 13:29
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Catstail Посмотреть сообщение
Странное начало...
Да не, нормальное!
Причём в десятки раз более быстрое, чем с Героном

Visual Basic
1
2
3
4
5
6
7
F=abs((a.X – c.X) * (b.Y – c.Y) – (b.X – c.X) * (a.Y – c.Y)) / 2
if f then
  'Debug.print "Площадь="f - опечатка
  Debug.print "Площадь=" & f
else
  Debug.print "Треугольник НЕ существует"
endif
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
20.06.2012, 14:48
Действительно... Позор на мою голову!
1
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
21.06.2012, 20:19
Лучший ответ Сообщение было отмечено как решение

Решение

Пролистал историю этой формулы и... решил опубликовать
Цитата Сообщение от MX
На мой взгляд формула Герона в случае, когда нас не интересуют длины сторон треугольника, как в каком-то из подобных вопросов на этом же форуме, черезчур требовательна к ресурсам. Четыре корня квадратных для такой задачки - это перебор!
Visual Basic
1
2
3
4
5
6
7
8
Type Coor 
   X As Double 
   Y As Double 
 End Type 
 
 Function Get_3AngleSqr(a As Coor, b As Coor, c As Coor) As Double 
 Get_3AngleSqr = ((a.X - b.X) * (a.Y + b.Y) + (b.X - c.X) * (b.Y + c.Y) + (c.X - a.X) * (c.Y + a.Y)) / 2 
 End Function
Предлагаемый вариант сработает на порядок быстрее, к тому же может выдать ещё и дополнительную информацию о том, по или против часовой стрелки идет обход a>b>c>a или слева/справа от луча [a,b) находится точка с. Если подобная информация не интересна, то нетрудно взять результат по модулю:
Visual Basic
1
msgbox Abs(Get_3AngleSqr(a, b, c))
И доказать эту формулу, в отличие от формулы Герона, способен практически любой, знакомый с формулой площади трапеции.

Кстати, подобным образом решается задача нахождения площади любого многоугольника с непересекающимися сторонами.
Цитата Сообщение от Sefko
В отношении предложенного варианта. Несомненное достоинтство - абсолютная прозрачность доказательства. Если же иметь в виду вычислительную эффективность, то есть более простой вариант (меньше на три операции сложения). Правда, доказательство не столь прозрачно. В терминах введенных MX обозначений
Visual Basic
1
Get_3AngleSqr = ((c.X - b.X) * a.Y + (a.X - c.Y) * b.Y + (b.X - a.X) * c.Y) / 2
Или еще лучше (операция умножения заменяется на вычитание)
Visual Basic
1
Get_3AngleSqr = ((a.X – c.X) * (b.Y – c.Y) – (b.X – c.X) * (a.Y – c.Y)) / 2
Но все это, для треугольника на плоскости! От Герона убежать можно и в пространстве, а от корня квадратного сложно.
Вдруг кому на пользу
5
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2012, 20:19
Помогаю со студенческими работами здесь

Треугольник задан координатами вершин. Найти его периметр и площадь
Здравствуйте. Помогите пожалуйста исправить программу для ТС. Даны координаты вершин треугольника. Найти ее площадь. После введения...

Треугольник задан координатами своих вершин. Найти его периметр и площадь.
Здрасте) Помогите пожалуйста Треугольник задан координатами своих вершин. Найти его периметр и площадь. (Описать функцию вычисления...

Даны три числа. Существует ли треугольник со данными сторонами, если существует, то найти его периметр и площадь
Даны три числа. Определить, существует ли треугольник со сторонами длиной a, b, c и, если существует, то найти его периметр и площадь.

Выяснить существует ли треугольник с такими данными сторон и если существует - вычислить величину всех его углов.
Даны три числа A, B и С. Выяснить существует ли треугольник с такими даными сторон и если существует - вычеслить величину всех его углов. ...

Заданы координаты сторон треугольника. Если такой треугольник существует, то найти его площадь
writeln('Стороны равны: ', a:0:2,' ', b:0:2,' ', c:0:2); writeln('Площадь треугольника = ', sqrt(p * (p - a) * (p - b) * (p - c)):0:3) ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru