IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задачка про треугольники
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Всем привет
Перейду непосредственно к задаче:
Нужно при заданных значениях сторон треугольника определить его вид
сложность у меня возника при определение прямоугольного треугольника ,немогу понять как определить что он прямоугольный (зная только что стороны должны быть кратны 3 ,4 ,5 соответственно)
помогите пожалуйста rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Наверно задача все же имеет отношение к программированию.
Но сначала математика.

Теорема 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):

X := Line[2]*Line[2] + Line[3]*Line[3] - Line[1]*Line[1];
if X < 0 then
Write('Треугольник тупоугольный.')
else
if X > 0 then
Write('Треугольник остроугольный.')
else
Write('Треугольник прямоугольный.')


===========================================================
Поправка. Весь массив сортировать не нужно, нужно только выделить в нём максимальный элемент,
то есть достаточно одного прохода:

if Line[3] > Line[2] then
begin
X := Line[2]; Line[2] := Line[3]; Line[3] := X
end;
if Line[2] > Line[1] then
begin
X := Line[1]; Line[1] := Line[2]; Line[2] := X
end;



Теперь можно сконструировать целую программу и поместить в архив...
Правда для не очень больших целых чисел можно решить эту задачу в уме.

Сообщение отредактировано: Neznaika -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.03.2024 10:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name