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

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

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

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





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

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


Всем привет
Перейду непосредственно к задаче:
Нужно при заданных значениях сторон треугольника определить его вид
сложность у меня возника при определение прямоугольного треугольника ,немогу понять как определить что он прямоугольный (зная только что стороны должны быть кратны 3 ,4 ,5 соответственно)
помогите пожалуйста rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Neznaika
сообщение 9.10.2007 11:27
Сообщение #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 - 9.10.2007 12:22
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 21.07.2025 7:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"