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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
СанСаныч1
1 / 1 / 0
Регистрация: 29.03.2010
Сообщений: 60
#1

Найти сумму ряда - C++

23.03.2011, 11:22. Просмотров 1562. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти сумму ряда (C++):

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

Найти сумму ряда с точностью до члена ряда - C++
Помогите пожалуйста с задачей , вот условие Найти сумму ряда с точностью до члена ряда, меньшего ε(0.0001) для заданного значения и...

Найти сумму ряда с точностью до члена ряда - C++
Найти сумму ряда с точностью до члена ряда, меньшего 0.0001 для заданного значения и сравнить эту сумму с функцией контроля. Для...

Найти сумму ряда - C++
Вычислить S=1+2+3+4+…+n. Указание. В цикле выполнять S=S+i, i=i+1. До входа в цикл положить S=0, i=1. Исходные данные: n=8. помогите...

Найти сумму ряда - C++
Рассчитать сумму n членов ряда : в скобках после ...(Значение n задает пользователь) \large {-(x+1)}^{2}+\frac{(x+1)^...

Найти сумму ряда - C++
Составить алгоритм и написать программу на языке С – консольное приложение, выполняющую набор действий, заданный соответствующим вариантом....

10
Байт
Эксперт C
16320 / 10596 / 1586
Регистрация: 24.12.2010
Сообщений: 20,206
23.03.2011, 12:46 #2
Вот если б понять принцип построения членов ряда...
Можешь написать явную формулу зависимости n-члена от n ?
Или рекурсивную формулу для n-го члена?
Или словами внятно описать?
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 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
Нарушитель
Эксперт С++
4664 / 2870 / 229
Регистрация: 12.12.2009
Сообщений: 7,299
Записей в блоге: 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
85 / 85 / 2
Регистрация: 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
Эксперт С++
4945 / 2525 / 180
Регистрация: 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
Эксперт С++
4945 / 2525 / 180
Регистрация: 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
Привет! Вот еще темы с ответами:

Найти сумму ряда - C++
please помогите с кодом программы на с++ (как правильно вычислить s(x))

Найти сумму ряда - C++
Контрольная работа

Найти сумму ряда - C++
Рассчитать сумму n членов ряда : в скобках после ...(Значение n задает пользователь)

Найти сумму ряда - C++
Нужна программа для вычисления циклических алгоритмов Также добавил фото на которых мне пытались объяснить как это нужно сделать. И что...


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

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

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