Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 19.03.2021
Сообщений: 16
1

С++ ошибка NAN

22.05.2021, 22:13. Показов 2175. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
С++ ошибка NAN

С++ ошибка NAN

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
double f (double x)
{
return ((x*(atan(x)+exp(x+3)))/(abs(x)));
}
 
main()
{
double z;
z=(f(6)+pow(f(14),1/17)/pow(1-f(1.6),5))*(1/tan(f(6/100)))-((pow(1/tan(6),1/3)/(f(5))));
std::cout << "Z=" <<z;
getch();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2021, 22:13
Ответы с готовыми решениями:

Ошибка -nan(ind) и nan
Доброго времени суток форумчане! Решаю задачу, в которой необходимо найти площадь треугольника по...

Ошибка -nan(ind)
Как исправить? #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int...

Ошибка nan(ind)
Помогите, пожалуйста. Что за ошибка nan(ind) в момент когда y должен быть равен 0 #include...

Ошибка -nan<ind>
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() {...

9
40 / 29 / 11
Регистрация: 21.06.2019
Сообщений: 201
22.05.2021, 23:07 2
Timofey031, у Вас здесь в параметрах получался 0 => f(6/100) => f(0). Так как 6 - интегрального типа, а должно быть real типа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
double f (double x)
{
    return ((x*(atan(x)+exp(x+3)))/(abs(x)));
}
 
int  main()
{
    double z;
    z=(f(6)+pow(f(14),1.f/17)/pow(1-f(1.6),5))*(1/tan(f(6.f/100)))-((pow(1/tan(6),1.f/3)/(f(5))));
    std::cout << "Z=" <<z;
    getch();
}
Добавлено через 5 минут
+ ко всему, там где Вы возводили в степень 1/17 или 1/3, Вы получали 1 (значение в степени 0 == 1). Всё по той же причине!
1
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
22.05.2021, 23:10 3
Timofey031, добавлю ещё "пять копеек от себя":
чтоб не спрашивать других, а разбираться самому - нужно всё-таки учиться пользоваться отладчиком. Это очень и очень полезно.
Если бы вы так и поступили - то увидели бы, что одна из функций возвращает какую-то ересь (о чём собственно и говорит NaN) - пример вывода дебагера во вложении.

Ну или самый простой способ - разбиваете выражение на части и выводите в консоль результат этих подвыражений.
Миниатюры
С++ ошибка 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, но походу этот удивительный случай, а именно:
C++
1
z = pow(float(1.f/(tan(6))),float(1.f/3.f));
Всегда плюет nan, похоже придется смотреть в сторону сторонних либ.
Миниатюры
С++ ошибка NAN  
1
40 / 29 / 11
Регистрация: 21.06.2019
Сообщений: 201
22.05.2021, 23:20 6
Функция pow выводит значение NaN
1
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
22.05.2021, 23:29 7
Цитата Сообщение от Timofey031 Посмотреть сообщение
А можно как-то исправить?
Конечно можно:

6 / 100 есть 0.06 подставляем это в выражение

C++
1
z = (f(6) + pow(f(14), 1 / 17) / pow(1 - f(1.6), 5))*(1 / tan(f(0.06))) - ((pow(1 / tan(6), 1 / 3) / (f(5))));
и получаем нужный результат!!!!
1
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
22.05.2021, 23:31 8
Лучший ответ Сообщение было отмечено Timofey031 как решение

Решение

результат во вложении
Миниатюры
С++ ошибка NAN  
1
0 / 0 / 0
Регистрация: 19.03.2021
Сообщений: 16
22.05.2021, 23:32  [ТС] 9
Recrut_rf, Все равно NAN
С++ ошибка NAN
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 ведь я несу просвещения свет в этот бездуховный мир AMEN!!!

Короче - всё дело в преобразовании типов. Выражение 6 / 100 это int разделить на int. В результате получаем тоже int, который потом преобразуется к double. 6 / 100 есть 0.06, а по стандарту инт - есть целое число. Т. е. дробная часть будет просто отброшена. Далее полученный результат будет интерпретирован как дабл. Итог - функция f(6/100) вернёт тоже самое, как если бы мы её вызывали с параметром 0.
Чтобы подобного избежать, нужно явно указать тип дабл одному из операндов. Проще всего это сделать, приписав точку к одному из числовых литералов (но можно так же использовать либо сишное, либо плюсовое преобразование). В результате выражение будет считаться по наиболее точному типу (в нашем случае - даблу). И результат деления тоже автоматом получит тип дабл.
1
23.05.2021, 01:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2021, 01:29
Помогаю со студенческими работами здесь

Ошибка -nan (ind)
Не пойму, как избавится от этой ошибки #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt;...

Ошибка теста функции с NAN
Такая проблема. Написал тест, который проверяет функцию. Функция от одной double переменной x, |x|...

Ошибка NAN при расчетах
Исправьте, пожалуйста, ошибку nan. Когда вводятся числа 0,0, -3 #include &lt;iostream&gt; #include...

Интегрирования трапециями. Ошибка -nan(ind)
Доброго времени суток! Пытаюсь реализовать интегрирование методом трапеций. Возникает постоянно...

Ошибка -nan при вызове математического выражения
Задача всего этого взять интеграл функции от 0 до 1. Main Float quanc(Float x){ return...

Заменить на NaN каждые пять строк до и после NaN
Здравствуйте! Я работаю с движениями глаз, на данный момент мне нужно обработать данные для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru