Здраствуйте, вот модуль его задача перевести радианы в градусы и если косинус равен 0 значению тангенса должно быть присвоено -100, но на практике выводит совсем другое, не могу понять в чём дело, если не трудно помогите
Не понял... Зачем радианы в градусы-то переводить? Может, наоборот, градусы в радианы? Что передается в качестве параметра функции Tg? Градусы или радианы? Функции Sin и Cos ожидают как раз угла в радианах, если что...
ROCKMAN
18.01.2008 17:17
А зачем нужно вот это условие: if cos(alfa) = 0 then tg:=-100; все равно потом: tg:=(sin(alfa)*180/pi)/(cos(alfa)*180/pi); подправь: if cos(alfa) = 0 then tg:=-100 else tg:=(sin(alfa)*180/pi)/(cos(alfa)*180/pi);
volvo
18.01.2008 17:21
ROCKMAN, еще раз - специально для тебя: не надо вообще ни на что делить, читай внимательно второй пост, и не давай вредных советов.
Вот, к примеру, зачем ты результат вычисления sin и cos умножаешь на (180/Pi)? В этом какой тайный смысл?
ROCKMAN
18.01.2008 17:28
Цитата(volvo @ 18.01.2008 13:21)
ROCKMAN, еще раз - специально для тебя: не надо вообще ни на что делить, читай внимательно второй пост, и не давай вредных советов.
Вот, к примеру, зачем ты результат вычисления sin и cos умножаешь на (180/Pi)? В этом какой тайный смысл?
Так надо же, чтобы значению тангенса было присвоено -100, SkyRideR так писал хотя задача внатуре неверная
SkyRideR
18.01.2008 21:57
На сколько я знаю, пакскаль считает в радианах, а нужно чтобы после подключения модуля и вызыва функции он на экран выводил значение в градусах, а не радианах. и значение tg должно быть равно -100 в том случае если косинус равен 0
volvo
18.01.2008 22:32
Ты на вопросы, заданные тебе НИКОГДА не отвечаешь? Тебя спросили, что передается в функцию Tg, радианы или градусы?
Добавлено через 4 мин. И вообще, кто же сравнивает с нулем вещественные значения напрямую? Надо сравнивать отклонение от 0...
Спасибо большое, вот только 2 вопроса < 10E-5 это откуда взято? и почему по модулю?
Yevgeny
18.01.2008 23:16
Это очень маленькое число, 10 в минус пятой степени, если не ошибаюсь, и abs(cos(alfa)) < 10E-5 значит, что если cos(alfa) попадает в эту погрешность, то условие будет выполняться, насать "=" можно тока когда работаешь с целочисленными типами (integer,...), а с вещественными это не катит, ибо у тебя это условие никогда не выполнится, это вроде бы происходит из-за разного представления цисел в памяти... Вот, но это не точно, пока кто-нить по опытней не подтвердит
SkyRideR
18.01.2008 23:38
ну в общем я всё подправил, и если чётко указать там 0, где 10Е-5 условие выполняется, так что работает на ура
Yevgeny
19.01.2008 0:01
ну, значит это я что-то напутал...
volvo
19.01.2008 0:40
Цитата
и если чётко указать там 0, где 10Е-5 условие выполняется
До поры до времени... На другой машине и/или при использовании другого компилятора получишь проблему, но если тебе нравится сначала сделать проблему, а потом ее решать - то Welcome... Я предпочитаю не давать поводов для таких ошибок, и использую сравнение погрешности...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.