Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
1

Вычислить сумму ряда 1/n! с заданной точностью

02.12.2016, 20:51. Просмотров 1059. Ответов 20
Метки нет (Все метки)

"Вычислить значение суммы ряда 1/n! при n -> бесконечности с заданной пользователем точности" - вот задание , что нужно сделать .
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdio.h"
void main()
{
    int n = 1;
    double eps, e = 1, S=0;
    printf ("Input exactness");
    scanf("%lf", eps);
    do
    {
        n++;
        e /= n;
        S+=e;
        
    }
    while (e>=eps);
    printf("%lf", S);
    getchar();
}
вот мною написанный код, не понимаю что не так
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2016, 20:51
Ответы с готовыми решениями:

Вычислить сумму ряда с заданной точностью
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом....

Вычислить сумму ряда с заданной точностью
Вычислить с точностью ε=10-5 сумму на языке си ...

Вычислить сумму ряда с заданной точностью
"Составить программу вычисления суммы ряда с точностью до члена ряда, меньшего Е. Производить...

Вычислить сумму ряда с заданной точностью
Помогите пожалуйста с решением задачи: Вычислить с точностью ε=10^-5 сумму ряда...

Вычислить сумму ряда с заданной точностью
Даны действительные числа s и E<1. Вычислить F=\sum_{n=1}^{\infty}\frac{2^n}{n!}*s^n для...

20
Songpool
53 / 42 / 31
Регистрация: 24.11.2016
Сообщений: 140
Завершенные тесты: 1
02.12.2016, 21:16 2
daryamanannikov, как ты думаешь, это
Цитата Сообщение от daryamanannikov Посмотреть сообщение
1/n!
и это
Цитата Сообщение от daryamanannikov Посмотреть сообщение
e /= n;
одно и тоже?
0
Даценд
Модератор
Эксперт .NET
4400 / 4082 / 2696
Регистрация: 20.04.2015
Сообщений: 7,407
02.12.2016, 21:19 3
Songpool,
я, например, думаю, что да.
daryamanannikov,
а так:
C++
1
2
3
4
5
6
do
{
    e /= n;
    S += e;
    n++;
} while (e >= eps);
1
Songpool
53 / 42 / 31
Регистрация: 24.11.2016
Сообщений: 140
Завершенные тесты: 1
02.12.2016, 21:40 4
Даценд,
Цитата Сообщение от Даценд Посмотреть сообщение
Songpool,
я, например, думаю, что да.
был неправ, не подумал, что e тоже уменьшается
0
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
02.12.2016, 21:56  [ТС] 5
почему-то все время выводит одно и то же значение
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:02 6
daryamanannikov, одну единичку потерял. Слушайся Даценд.
И на будущее
Цитата Сообщение от daryamanannikov Посмотреть сообщение
не понимаю что не так
пиши что именно не так
Написал бы сразу - 1.72 получается, и нам всем сразу все ясно. А тут голову ломать пришлось об коленку....
0
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
02.12.2016, 22:14  [ТС] 7
Байт, простите, какую единичку ?
p.s можно ко мне, пожалуйста, в женском роде обращаться
0
Даценд
Модератор
Эксперт .NET
4400 / 4082 / 2696
Регистрация: 20.04.2015
Сообщений: 7,407
02.12.2016, 22:20 8
daryamanannikov,
Ту, которая является первым слагаемым ряда 1/1+1/2+ 1/6+1/24+...+
В вашем изначальном коде она не учитывалась и ряд начинался с 1/2
Так какое число получается: 1 (в изначальном варианте 0.5) или, как предположил ув. Байт, 1.72?
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:22 9
Уважаемая daryamanannikov!
Цитата Сообщение от daryamanannikov Посмотреть сообщение
все время выводит одно и то же значение
А почему должно выводить разные? От запуска к запуску основание натурального логарифма не меняется.
Цитата Сообщение от daryamanannikov Посмотреть сообщение
Байт, простите, какую единичку ?
А что, розве я не угадал? Что у вас выводит?
Кажется, в начале надо S = 1. первый член 1/0! = 1, а его ты не считала (на ТЫ, потому что с ВЫ женского рода не получается, а вовсе не из недостатка вежливости )
0
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
02.12.2016, 22:25  [ТС] 10
Даценд, ну, после того как я это исправила, программа все равно выдает то же число
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:26 11
Хотя в задании не сказано, что именно e надо считать... Просто ряд. И откуда он начинается, тоже не сказано...
0
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
02.12.2016, 22:27  [ТС] 12
Байт, если я задаю разную точность , например , 1e-1 и 1e-5 не должны ли значения различаться ?
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:27 13
Цитата Сообщение от daryamanannikov Посмотреть сообщение
выдает то же число
КАКОЕ?????!!!
0
Даценд
Модератор
Эксперт .NET
4400 / 4082 / 2696
Регистрация: 20.04.2015
Сообщений: 7,407
02.12.2016, 22:28 14
Цитата Сообщение от daryamanannikov Посмотреть сообщение
выдает то же число
Мы просто в нетерпении! Нет сил ждать!
Назовите же нам это загадочное число!
1
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:33 15
Цитата Сообщение от daryamanannikov Посмотреть сообщение
Байт, если я задаю разную точность , например , 1e-1 и 1e-5 не должны ли значения различаться ?
Да, тут ты прав. Но скажи, что задаешь, что получается и вариант кода, с которым это получается.

Добавлено через 3 минуты
Цитата Сообщение от daryamanannikov Посмотреть сообщение
scanf("%lf", eps);
Тьфу ты!Даценд, где были наши глаза? Ну, девочке то простительно, она юна и прекрасна. Но мы то?
C
1
scanf("%lf", &eps);
Добавлено через 1 минуту
daryamanannikov, А помогла твоя наводка в посте 12.
1
daryamanannikov
0 / 0 / 0
Регистрация: 02.12.2016
Сообщений: 18
02.12.2016, 22:49  [ТС] 16
Байт,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdio.h"
void main()
{
    int n = 1;
    double eps, e = 1, S=0;
    printf ("Input exactness");
    scanf("%f", &eps);
        do
        {
            
            e /= n;
            S += e;
            n++;
        }
    while (e >= eps);
        
    printf("%f", S);
    getchar();
}
ввожу 1e-5, например , и выдает 1.718282 и также с другими значениями
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:52 17
daryamanannikov, Вообще-то твоя ошибочка требует тщательной разборки. Смотри что происходит. scanf("%lf", ...) ждет параметра - адреса числа типа double. Ты ему подсовываешь e. А там какой-то мусор. И она этот мусор рассматривает как адрес. И пишет по этому адресу (куда?) то замечательное число, что ты ввела. Что может произойти.
а) может вообще все сломаться.
б) компьютер взвоет по защите памяти
в) Если в e был 0, твой цикл никогда не остановится - зацикливание.
А соответствие параметра Си не проверяет - он тебе верит.
Эта функцифлюшечка scanf - тоже дама. И очень коварная. И ее применение требует повышенной бдительности.
Удачи!
1
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,326
02.12.2016, 22:56 18
Цитата Сообщение от daryamanannikov Посмотреть сообщение
C
1
2
3
scanf("%f", &eps);
...
printf("%f", S);
Куда и почему вдруг пропала l из %lf???
0
Байт
Эксперт C
20284 / 12849 / 2688
Регистрация: 24.12.2010
Сообщений: 26,841
02.12.2016, 22:59 19
Цитата Сообщение от daryamanannikov Посмотреть сообщение
и выдает 1.718282 и также с другими значениями
С какими значениями и что выдает? Вообще-то выдает правильно. Это e - 1
Или тебя смущает, что всегда выдает 6 знаков? Да, это формат по умолчанию для printf ("%f", ...)
Хочешь больше знаков? Пиши printf("%.10f",...)
Можно даже так
C
1
2
int k = 12;
printf("%.*f", k, S);
А уж k подбирай в программе под ту точность, которая тебе нравится.
0
Даценд
Модератор
Эксперт .NET
4400 / 4082 / 2696
Регистрация: 20.04.2015
Сообщений: 7,407
02.12.2016, 23:05 20
daryamanannikov,
вот картинка для проверки:
1
Миниатюры
Вычислить сумму ряда 1/n! с заданной точностью  
02.12.2016, 23:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2016, 23:05

Вычислить сумму бесконечного ряда с заданной точностью
Вычислить сумму бесконечного ряда: S=1/2-1/4+1/8-1/16 вот такой вот ряд..... В этом коде...

Вычислить сумму значений ряда в заданном интервале с заданной точностью
Есть программа, вычисляющая сумму значений ряда в заданном интервале с заданной точностью....

Вычислить сумму бесконечно заданного ряда с заданной точностью eps
Вычислить сумму бесконечного ряда: S=1/1-1/3+1/5-1/7...


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

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

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