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

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

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

Вычислить сумму ряда - C++

23.12.2011, 10:52. Просмотров 747. Ответов 10
Метки нет (Все метки)

Столкнулся с некоторыми задачками, хотелось бы разобраться:

Вычислить сумму ряда с позиции M до позиции N. Каждый i-ый член ряда определяется соотношением:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{2^{i-1}}{i!}.
Результат вывести на экран.

Реализация задач на Си. Заранее спасибо.

 Комментарий модератора 
  • Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
  • На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в ответах и облегчает поиск.
  • Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
  • Используйте редактор формул
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2011, 10:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить сумму ряда (C++):

Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. - C++
Привет! Пишу простую контрольную, не могу понять, то ли я где-то со знаками туплю, то ли формула не корректна. Задание: Мое...

Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до n - C++
18 задача 1 лаба После удара о поверхность Земли мяч движется вертикально вверх со скорость 15 м\с. Найдите координату мяча над...

Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N - C++
Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N. Не могу найти где ошибка ? #include <iostream> #include...

Вычислить сумму ряда - C++
Всем доброго вечера) Знаю что изи, но я пробую и что-то неверно считает, жду помощи) Сам пример: Дано натуральное число N. Вычислить

Вычислить сумму ряда - C++
Вычислить сумму ряда(приведен на изображении) с точностью ε. Сделать графическую интерпретацию результата.\ Как я понял вводятся 'x' и...

Вычислить сумму ряда - C++
\sum_{i=1}^{n}{(\sin(x))}^{i} Я не понимаю как это должно быть, функцию pow() не использовать

10
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:46 #2
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
long fact(long n)
{
    long ret = n;
    if(0 < (n = n - 1))
        ret *= fact(n);
    return ret;
}
 
double calc_element(long i)
{
    double elem = pow(2, i - 1);
    elem /= 1.0*fact(i);
    return elem;
}
 
 
int main()
{
    long i,M,N;
    printf("Enter M = ");scanf("%u",&M);
    printf("Enter N = ");scanf("%u",&N);
    double elem = calc_element(M);
    printf("elem[%d]= %lf\n",M,elem);
    double summ = elem;
    for(i = M + 1; i <= N; i++)
    {
        elem *= 1.0/(i + 1);
        summ += elem;
    }
    printf("summ = %lf\n",summ);
    printf("Press any key to continue\n");
    getch();
    return 0;
}
1
Миниатюры
Вычислить сумму ряда   Вычислить сумму ряда  
-=ЮрА=-
Заблокирован
Автор FAQ
23.12.2011, 12:58 #3
Остановлюсь на этом
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
elem *= 1.0/(i + 1);
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{i + 1} = \frac{{2}^{(i + 1) - 1}}{(i + 1)!} = \frac{{2}^{i}}{(i + 1)*i!}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{i} = \frac{{2}^{i - 1}}{i!}
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{a}_{i + 1}}{{a}_{i}} = \frac{\frac{{2}^{i}}{(i + 1)*i!}}{\frac{{2}^{i - 1}}{i!}} = \frac{{2}^{i - (i - 1)}}{(i + 1)} = \frac{2}{i + 1}

Добавлено через 55 секунд
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
elem *= 1.0/(i + 1);
- я в уме делил надо elem *= 2.0/(i + 1)
2
Svender
1 / 1 / 0
Регистрация: 06.05.2011
Сообщений: 12
14.01.2012, 19:17  [ТС] #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C
1
2
3
4
5
6
7
long fact(long n)
{
    long ret = n;
    if(0 < (n = n - 1))
        ret *= fact(n);
    return ret;
}
Юра, а для чего этот блок?
0
Aed Ginvaell
1 / 1 / 0
Регистрация: 14.01.2012
Сообщений: 36
14.01.2012, 19:25 #5
Цитата Сообщение от Svender Посмотреть сообщение
Юра, а для чего этот блок?
Это - рекурсия. заменяет цикл
0
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 19:26 #6
Функия fact возвращает факториал числа переданного ей в качестве входного парметра
1
Svender
1 / 1 / 0
Регистрация: 06.05.2011
Сообщений: 12
14.01.2012, 19:40  [ТС] #7
Ясно, спасибо. Но компилятор выдаёт сбой построения. Ипользую визуал студио 2010 ultimate.
0
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 22:11 #8
Цитата Сообщение от Svender Посмотреть сообщение
Ясно, спасибо. Но компилятор выдаёт сбой построения. Ипользую визуал студио 2010 ultimate.
- приложите скрин ошибки (10-ка очень геморна,и часто "ноет" на совсем обычные вещи)

Добавлено через 1 минуту
Как вариант вместо такого конца main
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
getch();
* * * * return 0;
}
- запишите такой

C
1
2
3
_getch();
* * * * return 0;
}
1
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 22:19 #9
Хотя...2008-ая студия указала сюда(для pow нужно явное указание типа аргумента, в ранних версиях студии такой беды не было)
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
double elem = pow(2, i - 1);
- чтож запишите эту строку вот так
C
1
double elem = pow(2.0, i - 1);
Впрочем вот весь код со скрином Debug
Код здесь
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
long fact(long n)
{
    long ret = n;
    if(0 < (n = n - 1))
        ret *= fact(n);
    return ret;
}
 
double calc_element(long i)
{
    double elem = pow(2.0, i - 1);
    elem /= 1.0*fact(i);
    return elem;
}
 
 
int main()
{
    long i,M,N;
    printf("Enter M = ");scanf("%u",&M);
    printf("Enter N = ");scanf("%u",&N);
    double elem = calc_element(M);
    printf("elem[%d]= %lf\n",M,elem);
    double summ = elem;
    for(i = M + 1; i <= N; i++)
    {
        elem *= 1.0/(i + 1);
        summ += elem;
    }
    printf("summ = %lf\n",summ);
    printf("Press any key to continue\n");
    _getch();
    return 0;
}
1
Миниатюры
Вычислить сумму ряда  
Svender
1 / 1 / 0
Регистрация: 06.05.2011
Сообщений: 12
16.01.2012, 12:07  [ТС] #10
как пишется программа без циклов:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
long fact(long n)
{
        long ret = n;
        if(0 < (n = n - 1))
                ret *= fact(n);
        return ret;
}
 
double calc_element(long i)
{
        double elem = pow(2, i - 1);
        elem /= 1.0*fact(i);
        return elem;
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
-=ЮрА=-
Заблокирован
Автор FAQ
16.01.2012, 20:47 #11
Цитата Сообщение от Svender Посмотреть сообщение
как пишется программа без циклов:
- м.б имелось ввиду как сделать с циклами и без рекурсии(в коде который вы выделили никаких циклов нет - это тела функций пользователя)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    long i,M,N;
    printf("Enter M = ");scanf("%u",&M);
    printf("Enter N = ");scanf("%u",&N);
    double summ = 0;
    double elem = 1;
    for(i = 1; i < N; i++)
    {
        elem *= 2.0/(i + 1);
        if(M - 1 <= i)
            summ += elem;
    }
    printf("summ = %lf\n",summ);
    printf("Press any key to continue\n");
    _getch();
    return 0;
}
На скринах отработка алгоритма и проверка его работы в MathCAD
1
Миниатюры
Вычислить сумму ряда   Вычислить сумму ряда  
16.01.2012, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 20:47
Привет! Вот еще темы с ответами:

Вычислить сумму ряда - C++
\sum_{1}^{9}In(x+1)/(x+k)

Вычислить сумму ряда - C++
вычислить

Вычислить сумму ряда - C++
Добрый вечер. Ребята, помогите пожалуйста записать формулу в С++. Программа сама то написана, а вот формулу никак не получается вывести.

Вычислить сумму ряда - C++
Ребятушки, выручайте! Столкнулся с проблемой, не могу понять, как написать прогу, которая будит решать данное уравнение:...


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

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

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