171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
||||||
1 | ||||||
Определить дальность полета25.08.2012, 17:11. Показов 7589. Ответов 19
Метки нет (Все метки)
Всем доброго время суток. Написать программа определения дальности полета L брошенного под углом с начальной скоростью V используя соотношение:
. Вот сам код апрограммы:
0
|
25.08.2012, 17:11 | |
Ответы с готовыми решениями:
19
По заданному времени взлета и длительности полета определить время посадки самолета По начальной скорости и времени полета тела определить угол, под которым тело брошено по отношению к горизонту Модель полета Рассчитать время полета самолёта (С++) |
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
||||||
25.08.2012, 17:19 | 2 | |||||
Хотя даже не в этом дело, число в любом случае точно не получить, округлять придется Или можно задать столько цифр в PI, чтобы ошибка оказалась за пределами double и получится точно ноль
1
|
25.08.2012, 17:25 | 3 | ||||||||||
в выражениях
1
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
|
25.08.2012, 17:47 [ТС] | 4 |
stawerfar спасибо за совет, но он не помог. Результат остался тот же????
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
25.08.2012, 17:59 | 6 |
давно уже есть on-line компиляторы http://liveworkspace.org/
0
|
137 / 126 / 14
Регистрация: 03.07.2012
Сообщений: 355
|
||||||
25.08.2012, 18:01 | 7 | |||||
У меня вот какой результат.
Получается что defer был прав. Все дело в вашем #define PI 3.14 (слишком мало цифр после запятой)
1
|
25.08.2012, 18:15 | 8 |
да все верно тут ошибка в том что компилятор использует не явные преобразования, нужно явно указывать вещественные...
Добавлено через 11 минут Я проверил твой код он работает правильно! вот результаты при дальности 10 и угле 90 результат = 0.0162516; Проблема в твоем компиляторе замени #define PI на const double PI; также предусмотри чтобы не было не явных преобразований, ну например в твоей строчке alpha = alpha*(PI/180.0); компилятор может не понять что это вещественное число и дробная часть будет обрезана. Вообще от define и от макросов давно отказались из-за похожих проблем, это пережитки Cи. Рекомендуется использовать const ....
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
25.08.2012, 18:22 | 9 |
Где тут правильно, при угле 90 результат должен быть 0, ведь подбрасываем вертикально вверх
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
25.08.2012, 18:23 | 10 |
К сожалению, это при точных вычислениях. Вычисления с плавающей точкой неточны. Это родовая неизлечимая травма.
1
|
25.08.2012, 18:30 | 11 |
Я ещё раз повторю , код работает правильно, как написал так и работает. Машина глупая но точная!!
Если тебя не устраивают результаты то ищи ошибку в логике или в синтаксисе. Дай мне проверочные данные т.е входные и выходные параметры для проверки программы, которые ты посчитал и уверен что они правильны. Тогда я постараюсь тебе помочь
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
25.08.2012, 18:54 | 12 |
0
|
25.08.2012, 18:57 | 13 |
простите слепого пердуна!
вот решение, я добавил цифр в число Pi #define PI 3.141592 и вот что получил 6.5358979307624187e-007 что интерпретируется компилятор как 0(т.е число максимально приближенное к нулю). Так как ровно 0 в природе не бывает и именно по этому делить на 0 нельзя т.к получается +бесконечность но не 0
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
|
25.08.2012, 19:15 | 14 |
0
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
|||||||||||
25.08.2012, 19:39 [ТС] | 16 | ||||||||||
Всем спасибо за содействие, сделал как советует stawerfar использовал
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
25.08.2012, 19:42 | 17 |
Используя double — нет. Как только вы сможете точно представить половинку числа пи в компьютере — будет вам ноль. (Это возможно. Я не шучу.) Если извращаться не хочется, то решение такое: считать нулём всё, что по модулю меньше 10–6 (или какая вам надо точность).
0
|
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
|
||||||
25.08.2012, 19:46 | 18 | |||||
1
|
nexen
|
25.08.2012, 19:56
#19
|
0
|
171 / 104 / 25
Регистрация: 17.10.2010
Сообщений: 1,146
|
||||||
25.08.2012, 21:46 [ТС] | 20 | |||||
nexen уже давно исправил на const double PI = 3.141592. Смотрите внимательно предыдущие посты.
Добавлено через 16 минут Спасибо defer пока только ваш вариант остается единственным решением в данной ситуации:
0
|
25.08.2012, 21:46 | |
25.08.2012, 21:46 | |
Помогаю со студенческими работами здесь
20
Вычисление времени полета тела Расчет данных по траектории полета вертолета Анимация полета по кривой, как реализовать? Вычисление максимальной дальности полета и максимального угла Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |