Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.97
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
#1

nan - C++

04.11.2010, 01:26. Просмотров 4524. Ответов 16
Метки нет (Все метки)

подскажите что это означает ввожу данные на выходе "nan"
работаю только с double, long int
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.11.2010, 01:28     nan #2
выложыте код!!!!
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 01:33  [ТС]     nan #3
та уже понял))это если данные не введены или им ничего не присвоино а потом их вывести то будет nan )

Встал другой вопрос почему не считает как надо Sn

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
49
50
51
52
#include <stdio.h>
#include <math.h>
#include <iostream.h>
#include <iomanip.h>
 
#include <cmath>
using namespace std;
 
int main() {
    double h,Sn,Xi,p1,Si;
    long int a,b,i,N;
 
    cout<<"Введите а"<<endl;
    cin >>a;
    cout<<"Введите b"<<endl;
    cin >>b;
 
 
    Sn=0;
    h=0;
    Xi=0;
    p1=0;
    Si=0;
 
for (N=1;N<=10;N++)
{
    for (i=1;i<=N;i++)
    {
        h=(b-a)/N;
 
 
 
        Xi=a+i*h;
 
 
        p1=sin(Xi);
 
 
 
        Si=h*p1;
 
 
 
        Sn=Sn+Si;
        cout<<Sn<<endl;
        }
 
}
 
 
 
}
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.11.2010, 01:37     nan #4
Зачем столько библиотек? И неплохо было бы на задание посмотреть!!!

C++
1
2
3
4
5
int main() 
{
.............
return 0;
}
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 01:40  [ТС]     nan #5
библеотеки нужны просто это кусок проги
зачем задание??
мне нужно посчитать Sn грубо говоря но программа выводит бред
KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
04.11.2010, 01:42     nan #6
Цитата Сообщение от cap Посмотреть сообщение
подскажите что это означает ввожу данные на выходе "nan"
NaN (Not A Number) это такое состояние double когда в нем либо мусор либо результат некорректных вычислений. Подробнее тут http://ru.wikipedia.org/wiki/NaN
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.11.2010, 01:43     nan #7
Зачем использовать ето

C++
1
#include <math.h>
вместе с етим

C++
1
#include <сmath>
???
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 01:46  [ТС]     nan #8
да суть не в этом....суть в том что если прогу запустить Sn будет повторяющимся числом хотя в цикли оно сумируется как так выходит?

Добавлено через 28 секунд
Цитата Сообщение от MILAN Посмотреть сообщение
Зачем использовать ето

C++
1
#include <math.h>
вместе с етим

C++
1
#include <сmath>
???
не знал точно какая поэтому и написал обе
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
04.11.2010, 01:51     nan #9
Выложите конкретное задание, что вам надо сделать!!!
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 01:57  [ТС]     nan #10
ПРИЧЕМ ТУТ ЗАДАНИЕ ВЫ МОЖЕТЕ ПРОСТО СКАЗАТЬ ПОЧЕМУ Sn У МЕНЯ НЕ СУМИРУЕТСЯ ГДЕ ОШИБКА?

Добавлено через 1 минуту
запустите код введите 1 и 4 и увидите явно то что не должно быть
вот и спрашиваю почему так?
KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
04.11.2010, 01:59     nan #11
Цитата Сообщение от cap Посмотреть сообщение
h=(b-a)/N; Xi=a+i*h;
Вот это мне не нравится, у вас (b-a)/N дает целочисленный результат, вы сначала типы приведите к вещественным, а потом уже делите, например так double(b-a)/N
besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
04.11.2010, 02:02     nan #12
C++
1
h=(b-a)/N;
При маленьких a и b достаточно быстро возникает ситуация, когда разница (b-a) меньше N, что в свою очередь приводит к тому, что результат целочисленного деления = 0; Вот и получается, что увеличение идет на 0
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 02:07  [ТС]     nan #13
double(b-a)/N кажется решило проблему щас вручную проверю
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
04.11.2010, 02:07     nan #14
Мало того, N может быть равно нулю и программа выпадет в осадок. Проверку бы не помешало.
А нет. Ошибся. Тут не может быть нулю.
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 02:42  [ТС]     nan #15
да считает верно
скажите еще такой вопрос
вот когда считал вручную у меня там выходило -2.270406 в с++ же -2.27041 как бы округляет
можно ли убрать округление или нет?
besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
04.11.2010, 02:46     nan #16
cap,так это уже зависит, с какой точностью вам нужно посчитать Sn
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2010, 02:50     nan
Еще ссылки по теме:

Как присвоить переменной Double значение NaN? C++
Вывод nan при расчете C++
При изменении значения переменной получается nan C++
C++ Интегрирования трапециями. Ошибка -nan(ind)
C++ Nan после вычисления

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

Или воспользуйтесь поиском по форуму:
cap
1 / 1 / 0
Регистрация: 27.10.2010
Сообщений: 51
04.11.2010, 02:50  [ТС]     nan #17
в идеале мне надо посчитать последовательность Sn и еще Sm
дальше |Sn-Sm|<=eps где eps = 0.000001
Yandex
Объявления
04.11.2010, 02:50     nan
Ответ Создать тему
Опции темы

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