С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943

-nan(ind)

08.04.2020, 00:20. Показов 5022. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что такое -nan(ind) и как это исправить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
 
long double powDouble(long double a, long double b) {
    long double k = a;
    for(int i = 2; i <= b; ++i) {
        a *= k;
    }
    return a;
}
 
int main() {
    std::ofstream out("c:\\out.txt");
    long double lambda = 2., tetta = 400., PiConst = 0.04, beta = 0.6, So = 0.02, L = 750., alpha = 0.5;
    long double y, PiSave, S = 1000000.;
    int VSave, ESave;
    for(int V = 1; V <= 200; ++V) {
        y = lambda * tetta / (long double)V;
        for(int E = 1; E <= 200; ++E) {
            long double Pi;
            if(y != 1.L) {
                Pi = powDouble(y, (long double)E) * (1.L - y) / (1.L - powDouble(y, long double(E + 1)));
            } else {
                Pi = 1.L / (long double)(E + 1);
            }
            out  << std::setprecision(10) << E << "     " << V << "     " << Pi << "   " << PiConst << std::endl;
            if(Pi >= PiConst) {
                
                continue;
            }
            long double STemp = alpha * powDouble((long double)V, (long double)beta) + So * E * L; // S = Sн + Sп = alpha * V^beta + So*E*L
            if(STemp < S) {
                S = STemp;
                PiSave = Pi;
                VSave = V;
                ESave = E;
            }
            //out << E << " " << V << std::endl;
        }
    }
    //out << ESave << " " << VSave << " " << PiSave << " " << S << std::endl;
    return 0;
}
Начиная с E = 106 и V = 1 появляется -nan(ind) а потом исчезает и опять по кругу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2020, 00:20
Ответы с готовыми решениями:

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

-nan(ind)
нужно вычислить значение функции, вроде сделал все проверки, но все равно при вводе отрицательного float (например: -0.25) выводит...

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

3
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
08.04.2020, 00:35
Лучший ответ Сообщение было отмечено no swear как решение

Решение

no swear, я конечно сто лет не писал не крестах, но зачем pow велосипед, если есть powl()?
https://en.cppreference.com/w/c/numeric/math/pow
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
08.04.2020, 00:53
Лучший ответ Сообщение было отмечено no swear как решение

Решение

Цитата Сообщение от no swear Посмотреть сообщение
Начиная с E = 106 и V = 1 появляется -nan(ind) а потом исчезает и опять по кругу.
Так а что вы ожидали произойдет, когда вы начнете вычислять такие гигантские степени, которые не помещаются в диапазон вашего плавающего типа? 800 в 107 степени - это уже чересчур, учитывая, что вы, очевидно, запускаете код в реализации, в которой long double совпадает с double. Функция powDouble возвращает inf, а деление на inf дает вам nan.

В реализации с 80-битным long double у вас был бы шанс "проскочить". А в 64-битный long double вы не помещаетесь.
1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
08.04.2020, 01:33  [ТС]
Цитата Сообщение от DobroAlex Посмотреть сообщение
я конечно сто лет не писал не крестах, но зачем pow велосипед, если есть powl()?
Та это просто для себя написал так powl тоже можно использовать конечно.

TheCalligrapher, Как я раньше не заметил что переполнение может произойти.

Спасибо за ответы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2020, 01:33
Помогаю со студенческими работами здесь

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

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

Выдаёт -nan(ind)
Header.h файл#pragma once double f(double x); double h(double a, double b, int n); double hi(int i, int n, double a, double b); ...

Ошибка -nan(ind)
Как исправить? #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int V, T; double g=9.8, a; cout...

Почему выдает -nan(ind)
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); int x =...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru