Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hexcry
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 5
#1

Выводит -1.#IND вместо значения переменной - C++

16.02.2017, 01:27. Просмотров 299. Ответов 5

Здравствуйте, очень долго бьюсь с проблемой. заключается она в следующем. Есть ряд Тейлора для sin(x)/x который равен(сразу распишу) sum += pow((-1.0),n)*pow(x1,n*2)/(Fact(n*2+1)) при увеличении n, но вот в чем проблема: при выводе дает одно значение а остальные заменят на -1.#IND. что делать не знаю подскажите пожалуйста. тестовые значения 1 1 10.
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
47
48
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std; 
 
int Fact(int x) 
{ 
    int fc = 1;
    for(int i = 1; i <= x; i++)
        fc *= i;
    return fc;
}
 
int main()
{
    long double sum = 0.0;
    int n = 0;
    double epsilon = 1e-006;
    long double dx = 0.0, x1 = 0.0, x2 = 0.0;
 
    cout << "input dx, x1, x2 -> ";
    cin>> dx >> x1 >> x2;
    cout << endl;
 
    for(int i = 0; i <  30; i++) cout << "_";
    cout << endl;
 
    cout << "|"<< setw(3) << "X" << setw(3) << "|" << setw(10) << "SUM" << setw(7) << "|" << setw(3) << "N" << setw(3)<< "|"<<"\n|";
 
    for(int i = 0; i <  28; i++) cout << "_";
    cout << "|" << endl;
 
    for (; x1 < x2; x1+=dx){
        n = 0;
 
        do{ sum += pow((-1.0),n)*pow(x1,n*2)/(Fact(n*2+1)); n++;}
        while(sin(x1)/x1 - epsilon > sum || sum > sin(x1)/x1 + epsilon);
 
        cout << "|" << setw(3) << x1 <<setw(3)<< "|" << setw(10) <<  sum << setw(7) << "|" << setw(3) << n << setw(3)<< "|" << endl;
 
    }
 
    for(int i = 0; i <  30; i++) cout << "_";
    cout << endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2017, 01:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводит -1.#IND вместо значения переменной (C++):

Выводит INF вместо значения - C++
Не ругайте за стиль , только учусь. проблема с выводом значения X строка 63,68. Вроде 97/97 должно быть 1, он даёт INF // решение систем...

Задачка с рядами Тейлора выводит -1.#IND - C++
Вчера писали программу для рекуррентных рядов. Функция выдает решение, а вот с суммой ряда выходит незадача. При этом проверял везде,...

Выводится адрес переменной, вместо ее значения - C++
Пишу программу просмотра логинов и паролей из хрома. Все работает, за исключением того, что в консоль выводятся, насколько я понял, адреса...

Метод Якоби. Выводит результат -1.INF и -1.IND - C++
Вот сделал прогу, но почему-то вместо нормального результата выводит это: result|x: -1.#INF -1.#IND -1.#INF -1.#IND -1.#IND ...

Интерполяция методом Ньютона: вывод -1.#IND вместо нужных значений - C++
Написал программу для интерполяции методом Ньютона. Вместо нормальных цифр, выводит странные значения (-1.#IND00). На Линуксе...

-1.#IND при возвращении значения функции - C++
#include&lt;iostream&gt; using namespace std; float res=0; float number() { char c=cin.get(); if(c&gt;='0' &amp;&amp; c&lt;='9') { ...

5
Hexcry
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 5
16.02.2017, 01:31  [ТС] #2
Вот скрин работы программы...
0
Миниатюры
Выводит -1.#IND вместо значения переменной  
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3976 / 2200 / 553
Регистрация: 18.10.2014
Сообщений: 3,814
16.02.2017, 01:44 #3
1. Кто будет обнулять sum перед каждым новым вычислением? Пушкин?

2. Максимальный факториал, который поместится в 32-битный int - это 12!. С чего вы взяли, что ваши итерации закончатся быстрее? При таком epsilon никакой стандартный целочисленный тип не в состояни представить требуемые факториалы.

3. А что сказал дебаггер?

---

4. Что за манера, использовать pow для вычисления целочисленных степеней?
5. Что за манера, лепить большое количество интсрукций в одну строчку? Как это потом отлаживать?
6. Что за манера, объявлять все переменные кучей в начале функции?
1
Hexcry
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 5
16.02.2017, 01:56  [ТС] #4
Спасибо, часть советов помогли. Стыдно что не заметил что не обнуляю sum.. обнуляю sum, сократил epsilon до 1e-002, факториал лонговский.
Что-то несомненно помогло, но к сожалению до заветной 10ки не доходит. теперь считает хотя бы до 4 ого значения.. но все равно хотелось бы исправить код до полностью рабочего.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3976 / 2200 / 553
Регистрация: 18.10.2014
Сообщений: 3,814
16.02.2017, 02:05 #5
Цитата Сообщение от Hexcry Посмотреть сообщение
но все равно хотелось бы исправить код до полностью рабочего.
При использовании компилятора GCC я воспользовался нестандартным типом __uint128_t для вычисления факториала, и его хватает.

http://coliru.stacked-crooked.com/a/bbd22df8c223d7c2

Но 64-битного типа - не хватает.
1
Hexcry
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 5
16.02.2017, 02:08  [ТС] #6
Спасибо большое!
0
16.02.2017, 02:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2017, 02:08
Привет! Вот еще темы с ответами:

Вместо нуля выводит непонятное число - C++
Вот пожалуйста кусок кода, считающий неувязку после решения СЛАУ: int n=5; double **a, *b, *x, r, c, s, q; int i,...

Вместо результата выводит непонятное число - C++
Сделал программу которая должна высчитывать по формуле, но она высчитывает не совсем то число. int chislo =...

Выводит целочисленное значение вместо вещественного (функции) - C++
// 1-2.cpp: Отдельные функции // #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int i; void...

Вместо массива выводит большие отрицательные чсила - C++
Доброго времени суток! Создан массив в классе (вроде все верно) вот только выводит не тот массив который требуется: #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.