0 / 0 / 0
Регистрация: 19.03.2021
Сообщений: 16
|
||||||
1 | ||||||
С++ ошибка NAN22.05.2021, 22:13. Показов 2175. Ответов 9
Метки нет (Все метки)
0
|
22.05.2021, 22:13 | |
Ответы с готовыми решениями:
9
Ошибка -nan(ind) и nan Ошибка -nan(ind) Ошибка nan(ind) Ошибка -nan<ind> |
40 / 29 / 11
Регистрация: 21.06.2019
Сообщений: 201
|
||||||
22.05.2021, 23:07 | 2 | |||||
Timofey031, у Вас здесь в параметрах получался 0 => f(6/100) => f(0). Так как 6 - интегрального типа, а должно быть real типа
+ ко всему, там где Вы возводили в степень 1/17 или 1/3, Вы получали 1 (значение в степени 0 == 1). Всё по той же причине!
1
|
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
|
22.05.2021, 23:10 | 3 |
Timofey031, добавлю ещё "пять копеек от себя":
чтоб не спрашивать других, а разбираться самому - нужно всё-таки учиться пользоваться отладчиком. Это очень и очень полезно. Если бы вы так и поступили - то увидели бы, что одна из функций возвращает какую-то ересь (о чём собственно и говорит NaN) - пример вывода дебагера во вложении. Ну или самый простой способ - разбиваете выражение на части и выводите в консоль результат этих подвыражений.
2
|
0 / 0 / 0
Регистрация: 19.03.2021
Сообщений: 16
|
|
22.05.2021, 23:11 [ТС] | 4 |
HamsterGamer, А можно как-то исправить? Это дано такое условие и по нему мне как-то надо решить, но у меня получается ошибка. (В коде что Вы переслали, все равно ошибка NAN)
0
|
40 / 29 / 11
Регистрация: 21.06.2019
Сообщений: 201
|
||||||
22.05.2021, 23:19 | 5 | |||||
Timofey031, не знаю насколько можно верить документации microsoft, но походу этот удивительный случай, а именно:
1
|
40 / 29 / 11
Регистрация: 21.06.2019
Сообщений: 201
|
|
22.05.2021, 23:20 | 6 |
1
|
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
||||||
22.05.2021, 23:29 | 7 | |||||
Конечно можно:
6 / 100 есть 0.06 подставляем это в выражение
1
|
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
|
22.05.2021, 23:31 | 8 |
Сообщение было отмечено Timofey031 как решение
Решение
результат во вложении
1
|
0 / 0 / 0
Регистрация: 19.03.2021
Сообщений: 16
|
|
22.05.2021, 23:32 [ТС] | 9 |
0
|
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
|
|
23.05.2021, 01:29 | 10 |
Timofey031, если и так не считает, то предлагаю попробовать писать вместо, скажем 6, 6. (числовой литерал с точкой на конце, ну или явно 6.0 - оба варианта автоматически интерпретируются как double).
Добавлено через 1 час 49 минут Timofey031, решил всё-таки написать объяснение, почему прога возвращает nan Короче - всё дело в преобразовании типов. Выражение 6 / 100 это int разделить на int. В результате получаем тоже int, который потом преобразуется к double. 6 / 100 есть 0.06, а по стандарту инт - есть целое число. Т. е. дробная часть будет просто отброшена. Далее полученный результат будет интерпретирован как дабл. Итог - функция f(6/100) вернёт тоже самое, как если бы мы её вызывали с параметром 0. Чтобы подобного избежать, нужно явно указать тип дабл одному из операндов. Проще всего это сделать, приписав точку к одному из числовых литералов (но можно так же использовать либо сишное, либо плюсовое преобразование). В результате выражение будет считаться по наиболее точному типу (в нашем случае - даблу). И результат деления тоже автоматом получит тип дабл.
1
|
23.05.2021, 01:29 | |
23.05.2021, 01:29 | |
Помогаю со студенческими работами здесь
10
Ошибка -nan (ind) Ошибка теста функции с NAN Ошибка NAN при расчетах Интегрирования трапециями. Ошибка -nan(ind) Ошибка -nan при вызове математического выражения Заменить на NaN каждые пять строк до и после NaN Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |