Всем привет Перейду непосредственно к задаче: Нужно при заданных значениях сторон треугольника определить его вид сложность у меня возника при определение прямоугольного треугольника ,немогу понять как определить что он прямоугольный (зная только что стороны должны быть кратны 3 ,4 ,5 соответственно) помогите пожалуйста
мисс_граффити
8.10.2007 20:25
почему они должны быть кратны 3,4,5? Длина стороны - обязательно целое число, что ли?
gulldan
8.10.2007 20:36
вроде треугольники со сторонами кратными 3.4.5 то он прямоугольный я неособо много знаю я еще ученик 11 класса,но если Вы правы тогда тем более незнаю..
Айра
8.10.2007 20:43
Ну, по идее, в прямоугольном треугольнике квадрат гипотенузы равен сумме квадратов катетов, т.е. если у тебя строго выполняется это равенство, значит треугольник прямоугольный))
мисс_граффити
8.10.2007 20:43
неужели до 11 класса еще не проходили теорему Пифагора?
gulldan
8.10.2007 20:45
точно xD забыл про нее... спс
Neznaika
8.10.2007 21:18
Извиняюсь, но если подкоренное выражение в формуле Герона, используемое для вычисления площади треугольника по трём его сторонам, меньше или равно нулю, то эти самые три стороны треугольник не образуют. И дальнейшие проверки бесполезны.
Айра
8.10.2007 22:33
Цитата
но если подкоренное выражение в формуле Герона ... то эти самые три стороны треугольник не образуют
Да, как-то про такую ситуацию и не сказали.. По-моему, можно пойти еще проще: "в треугольнике любая сторона меньше суммы двух других сторон", если это условие не выполняется, то нет и треугольника))
Lapp
9.10.2007 3:20
Цитата(Айра @ 8.10.2007 23:33)
По-моему, можно пойти еще проще: "в треугольнике любая сторона меньше суммы двух других сторон", если это условие не выполняется, то нет и треугольника))
Верно, только я бы на всякий случай подчеркнул тут слово "любая". Выполнение этого условия для одной или двух сторон недостаточна для существования треугольника, то есть проверять нужно все три:
TriangCanBeBuild := (a+b>=c) and (b+c>=a) and (c+a>=b);
Еще можно сказать, остроугольный треугольник или тупоугольный, все по той же теореме Пифагора. Берем наибольшую сторону и сравниваем ее с суммой квадратов остальных.
М
А вообще, не понимаю, что эта тема делает в Задачах. До моего поста она не имела к Паскалю никакого отношения - я ее за уши притянул.. gulldan, учти это, пожалуйста.
Neznaika
9.10.2007 11:27
Наверно задача все же имеет отношение к программированию. Но сначала математика.
Теорема 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;
Теперь можно сконструировать целую программу и поместить в архив... Правда для не очень больших целых чисел можно решить эту задачу в уме.
Айра
9.10.2007 17:31
Цитата
Верно, только я бы на всякий случай подчеркнул тут слово "любая".
Ага. Там должно быть "каждая", ошибочка вышла
Цитата
Еще можно сказать, остроугольный треугольник или тупоугольный, все по той же теореме Пифагора. Берем наибольшую сторону и сравниваем ее с суммой квадратов остальных.
Т.е. если с^2>a^2+b^2, то треугольник тупоугольный, если меньше, то остроугольный?..
Lapp
10.10.2007 2:15
Цитата(Айра @ 9.10.2007 18:31)
Т.е. если с^2>a^2+b^2, то треугольник тупоугольный, если меньше, то остроугольный?..
Да. Neznaika, кажется, раскрыл это еще более подробно - хотя, точно это утверждать не могу, так как не нашел в себе сил дочитать его пост. Неясно, зачем столько теории для такой простой задачки..
Lapp
10.10.2007 3:14
Все же нашел в себе силы прочитать пост Незнайки.. Возможно, это оффтоп, но я все же выскажу свое мнение, которое одновременно и админское, и пользовательское.
2 Neznaika: Мне нравится твоя эрудиция. Я давно ищу возможность повысить тебе репутацию, но.. не могу. Скажи, почему большинство твоих постов совершенно не по делу? На Форуме (по крайней, мере на этом) не принято повторять то, что уже сказано выше в теме (а особенно, без ссылки на автора). Также, не принято сильно выходить за рамки темы (без необходимости). Твой пост - сплошная математика, теория, хотя я указал, что это не приветствуется в разделе Задачи. Далее - что нового он привнес по сравнению последним предложением в моем посте?.. Ничего. Я читаю твои ответы, читаю замечания Волво к ним. И в большинстве случаев Волво прав.. Будь так добр - умерь свой пыл, отвечай только по делу и только то, что еще не сказали до тебя. И тогда все будет хорошо. Еще раз: я симпатизирую тебе. Но я буду понижать тебе репутацию, если будешь продолжать отвечать не по делу. Спасибо за внимание.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.