Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
1

Найти сумму ряда

23.03.2011, 11:22. Просмотров 1683. Ответов 10
Метки нет (Все метки)

Прошу помощи с написанием программы на Си
s=(2/1!)+(4+6/2!)+(5+8+11/3!)+(6+10+14+18/4!)+...........n


Благодарю всех откликнувшихся на просьбу!!!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2011, 11:22
Ответы с готовыми решениями:

Найти сумму ряда с заданной точностью, если дан общий член ряда
Найти сумму ряда с точностью Е=-4 (0.0001) общий член которого n=n*-n2 (n...

Найти сумму ряда с точностью до члена ряда
Найти сумму ряда с точностью до члена ряда, меньшего 0.0001 для заданного...

Найти сумму ряда с точностью до члена ряда
Помогите пожалуйста с задачей , вот условие Найти сумму ряда с точностью до...

Найти сумму ряда
Что-то я совсем туплю, но незнаю как найти сумму ряда s=1/(1*2) + 1/(2*3) +...

Найти сумму ряда
Я учусь на заочном и все-равно не хватает времени заниматься. Поэтому, простите...

10
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
23.03.2011, 12:46 2
Вот если б понять принцип построения членов ряда...
Можешь написать явную формулу зависимости n-члена от n ?
Или рекурсивную формулу для n-го члена?
Или словами внятно описать?
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
23.03.2011, 13:07 3
Цитата Сообщение от СанСаныч1 Посмотреть сообщение
4+6/2!
а здесь точно только 6/2! или всю сумму делить, то есть (4+6)/2! ?
0
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
23.03.2011, 18:11  [ТС] 4
сори... не так написал...
конечно надо чтоб было так
S= 2/1!+(4+6)/2!+(5+8+11)/3!+(6+10+14+18)/4!+...../n!
я сам вот последовательность не сильно разобрал...
как я понял,тут первое число числителя=знаменатель +2,следущие число числителя =предыдущиму+знаменатель....как то вроде так...но на Языке что то реализовать не получается...
0
Kastaneda
Jesus loves me
Эксперт С++
4938 / 3014 / 346
Регистрация: 12.12.2009
Сообщений: 7,610
Записей в блоге: 2
Завершенные тесты: 1
23.03.2011, 20:22 5
S= 2/1!+(4+6)/2!+(5+8+11)/3!+(6+10+14+18)/4!+...../n!
Мне одному кажется, что здесь логика нарушенна? Должно быть:
S= 2/1!+(3+5)/2!+(4+7+10)/3!+(5+9+13+17)/4!+...../n!

Добавлено через 21 минуту
Хотя тут смотря как посмотреть, с другой стороны все правильно. Сразу не дошло)
0
vitaska
90 / 90 / 15
Регистрация: 04.02.2010
Сообщений: 162
23.03.2011, 21:40 6
Цитата Сообщение от СанСаныч1 Посмотреть сообщение
Прошу помощи с написанием программы на Си
s=(2/1!)+(4+6/2!)+(5+8+11/3!)+(6+10+14+18/4!)+...........n
если бы по условию ряд начинался с (3/1!)+......, то ряд можо было бы представить в таком виде:
0
Миниатюры
Найти сумму ряда  
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
24.03.2011, 02:11  [ТС] 7
не не, ряд написан правильно.... ну по крайней мере препод его таким задал.
я думаю что надо S0=присвоить 2/1!, а дальше уже цикл по вычислению суммы всего ряда
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.03.2011, 10:37 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h>
 
int main() {
        int i = 0, j = 0;       // счетчики
        int n = 10;             // предел
        int fact = 1;           // факториал
        int d = 0, k = 0;       // d: числитель n-члена ряда, k: вспомогательная переменная
        double s = 2;           // итоговое значение ряда (равен 2: значению первого члена ряда)
 
        // вычисления начинаются со второго члена ряда
        for (i = 2; i <= n; ++i) {
                // расчет значения факториала для n-члена ряда 
                fact += fact * (i - 1);
 
                // расчет числителя n-члена ряда
                d = k = 2 + i;
                for (j = 1; j < i; ++j)
                        d += (k += i);
                
                // сумма ряда
                s += (double) d / fact;
        }
 
        printf ("n = %d\ns = %e\n", n, s);
        return 0;
}
Результат вроде верный:
Код
s = (2/1!) + (4+6/2!) + (5+8+11/3!) + (6+10+14+18/4!) + ... + n

-------------------------------------------------------------
2 / 1 +
(10 / 2) +
(24 / 6) +
(48 / 24) +
(85 / 120) +
(138 / 720) +
(210 / 5040) +
(304 / 40320) +
(423 / 362880) +
(570 / 3628800) +

-------------------------------------------------------------
n = 10
s = 1.395053e+001
Видно что при n > 5 ряд фактически перестает расти.
1
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
24.03.2011, 10:55  [ТС] 9
fasked прошу объяснить,если конечно не трудно...

Цитата Сообщение от fasked Посмотреть сообщение
d = k = 2 + i; как это по шагам получается(т.е. в конце d=2+i)?т.е. k & d будут одинаковы?
for (j = 1; j < i; ++j)
d += (k += i);и вот это тоже не совсем запись понятно....
// сумма ряда
s += (double) d / fact;
(double)d - в чем здесь заключается роль double


СПАСИБО!!!
0
fasked
Эксперт С++
4982 / 2561 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.03.2011, 11:24 10
Цитата Сообщение от СанСаныч1 Посмотреть сообщение
(double)d - в чем здесь заключается роль double
Если делить целое число на целое число (то есть int на int), то результатом будет тоже целое число, следовательно дробная часть отбросится. Чтобы этого избежать одно из чисел приводится к типу double, фактическое получается что double делится на int, в результате дробная часть сохраняется.
В двух словах, если этого не сделать, то результат будет всегда равен 13-ти ровно (при n > 4, когда n-член ряда стремится к 0, то есть меньше 1).
1
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
24.03.2011, 12:28  [ТС] 11
огромное спасибо!!!

Добавлено через 35 минут
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
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
 
{ 
    int j,r=0;
    int b=1;
    double s=2.0;
    int n,u=0;
    int i=0;
 printf("\n Vvedite n = ");
 scanf("%d",&n);
   for (i=2; i<=n; ++i) 
     {
      b*=i; 
      r=u=2+i; 
 
    for (j=1; j<i; ++j)
      r+=(u+=i);
      s+=(double)r/b;
     }
    printf ("\n r=%d",r);
    printf ("\n s=%0.3f",s);
    return (0);
    }
0
24.03.2011, 12:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 12:28

Найти сумму ряда
задание в прикрепленном файле,там же и сам ряд.....компилятор Dev-c++ 4.9.9.2 ...

Найти сумму ряда
Помогите написать прогу!Очень нужно,завтра здавать! Условие Посчитать сумму...

Найти сумму ряда
не знаю как найти сумму последовательности S=1-2+3-4+5-6+7...n#include...


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

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

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