Всем привет
Перейду непосредственно к задаче:
Нужно при заданных значениях сторон треугольника определить его вид
сложность у меня возника при определение прямоугольного треугольника ,немогу понять как определить что он прямоугольный (зная только что стороны должны быть кратны 3 ,4 ,5 соответственно)
помогите пожалуйста
почему они должны быть кратны 3,4,5?
Длина стороны - обязательно целое число, что ли?
вроде треугольники со сторонами кратными 3.4.5 то он прямоугольный я неособо много знаю я еще ученик 11 класса,но если Вы правы тогда тем более незнаю..
Ну, по идее, в прямоугольном треугольнике квадрат гипотенузы равен сумме квадратов катетов, т.е. если у тебя строго выполняется это равенство, значит треугольник прямоугольный))
неужели до 11 класса еще не проходили теорему Пифагора?
точно xD
забыл про нее...
спс
Извиняюсь, но если подкоренное выражение в формуле Герона, используемое для вычисления площади треугольника по трём его сторонам, меньше или равно нулю, то эти самые три стороны треугольник не образуют.
И дальнейшие проверки бесполезны.
TriangCanBeBuild := (a+b>=c) and (b+c>=a) and (c+a>=b);. Дополнительная информация, если интересует, здесь: http://forum.pascal.net.ru/index.php?showtopic=15698 .
М | А вообще, не понимаю, что эта тема делает в Задачах. До моего поста она не имела к Паскалю никакого отношения - я ее за уши притянул.. gulldan, учти это, пожалуйста. |
Наверно задача все же имеет отношение к программированию.
Но сначала математика.
Теорема 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;
Все же нашел в себе силы прочитать пост Незнайки..
Возможно, это оффтоп, но я все же выскажу свое мнение, которое одновременно и админское, и пользовательское.
2 Neznaika:
Мне нравится твоя эрудиция. Я давно ищу возможность повысить тебе репутацию, но.. не могу.
Скажи, почему большинство твоих постов совершенно не по делу? На Форуме (по крайней, мере на этом) не принято повторять то, что уже сказано выше в теме (а особенно, без ссылки на автора). Также, не принято сильно выходить за рамки темы (без необходимости). Твой пост - сплошная математика, теория, хотя я указал, что это не приветствуется в разделе Задачи. Далее - что нового он привнес по сравнению последним предложением в моем посте?.. Ничего.
Я читаю твои ответы, читаю замечания Волво к ним. И в большинстве случаев Волво прав.. Будь так добр - умерь свой пыл, отвечай только по делу и только то, что еще не сказали до тебя. И тогда все будет хорошо.
Еще раз: я симпатизирую тебе. Но я буду понижать тебе репутацию, если будешь продолжать отвечать не по делу. Спасибо за внимание.