![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
gulldan |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем привет
Перейду непосредственно к задаче: Нужно при заданных значениях сторон треугольника определить его вид сложность у меня возника при определение прямоугольного треугольника ,немогу понять как определить что он прямоугольный (зная только что стороны должны быть кратны 3 ,4 ,5 соответственно) помогите пожалуйста ![]() |
![]() ![]() |
Neznaika |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Репутация: ![]() ![]() ![]() |
Наверно задача все же имеет отношение к программированию.
Но сначала математика. Теорема 1. В любом треугольнике против большего угла лежит большая сторона. ----------------------------------------------------------------------------------- По значению самого большого угла можно определить вид треугольника. По условию заданы стороны треугольника, следовательно нужно нужно найти максимальную из трех сторон(вот тут можно применить программирование - лучше всего создать массив из трёх элементов - сторон треугольника - и отсортировать его по убыванию, тогда первый элемент массива - большая сторона). Теорема 2. Теорема косинусов или обобщённая теорема Пифагора. c*c = a*a + b*b - 2*a*b*cosC, где С - угол напротив стороны c. ---------------------------------------------------------------------------------- Про косинус известно, что он больше нуля для [0:pi/2), равен нулю при pi/2, и меньше нуля для (pi/2,pi]. Следовательно, нужно узнать знак 2*a*b*cosC= a*a + b*b - c*c (так как выражение 2*a*b > 0, то оно не помешает для вычисления знака косинуса, т.е. делить на него не нужно). Иногда для обозначения знака используют функцию Sign(X), которая равна -1, 0 и 1 для отрицательных, нулевого и положительных значений X соответственно. Тогда получим: case Sign(a*a + b*b - c*c) of -1 : Угол > pi/2 0 : Угол = pi/2 1 : Угол < pi/2 end. Если например стророны треугольника объявить как массив Line = array[1..3] of LongInt то после его сортировки по убыванию можно записать следующие операторы (тип переменной X - LongInt):
=========================================================== Поправка. Весь массив сортировать не нужно, нужно только выделить в нём максимальный элемент, то есть достаточно одного прохода:
Теперь можно сконструировать целую программу и поместить в архив... Правда для не очень больших целых чисел можно решить эту задачу в уме. Сообщение отредактировано: Neznaika - 9.10.2007 12:22 |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 7:17 |