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

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

Войти
Регистрация
Восстановить пароль
 
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
#1

Вычислить сумму - C++

23.10.2013, 10:35. Просмотров 324. Ответов 4
Метки нет (Все метки)

Дано натуральное число n.
Вычислить:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{k=0}^{n} \frac{(-1)^k(k+1)}{k!}

Правильно-ли? Кто, что может подсказать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
using namespace std;
 
int factorial(int n)
{
    int result=1;
    for (int i = 1; i <= n; i++)
        result = result * i; 
    return (result);
}
 
int main()
{
    int n;
    double result=0;
    cout << "n: ";
        cin >> n;
    for (int k = 0; k <= n; k++)
        result = result + ((pow(-1,k)*(k+1))/(factorial(k)));
    cout << result << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 10:35     Вычислить сумму
Посмотрите здесь:

C++ Вычислить сумму
Вычислить сумму C++
Вычислить сумму 2/3+3/4 C++
C++ Вычислить сумму 1+1/2+1/3+…+1/n
C++ Вычислить сумму
C++ Вычислить сумму в Си++
Вычислить сумму C++
C++ Вычислить сумму
Вычислить сумму C++
C++ Вычислить сумму S = 1! + 2! + 3! + … + n!
Вычислить сумму C++
Вычислить сумму C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
es_
 Аватар для es_
200 / 200 / 46
Регистрация: 14.01.2013
Сообщений: 452
23.10.2013, 10:53     Вычислить сумму #2
Да, всё верно.)
Байт
Эксперт C
 Аватар для Байт
15059 / 9461 / 1385
Регистрация: 24.12.2010
Сообщений: 17,516
23.10.2013, 11:22     Вычислить сумму #3
Harmonster, на взгляд все верно.Но.
1. factorial лучше сделать как double. int очень быстро закончится...
2. Обрати внимание, что ты повторяешь вычисление уже вычисленного. 6! = 1*2*3*4*5*6, 7! = 1*2*3*4*5*6*7 - зачем? 7! = 7*6!
Лучше вычислять очередной член суммы на основании уже вычисленного предыдущего.
3. pow(-1,k) - как-то сомнительно выглядит. Некоторые трансляторы требуют положительного значения 1-го аргумента. Рекомендация пункта 2 снимает и эту проблему
Harmonster
9 / 9 / 3
Регистрация: 20.05.2012
Сообщений: 101
23.10.2013, 11:40  [ТС]     Вычислить сумму #4
Цитата Сообщение от Байт Посмотреть сообщение
Harmonster, на взгляд все верно.Но.
1. factorial лучше сделать как double. int очень быстро закончится...
2. Обрати внимание, что ты повторяешь вычисление уже вычисленного. 6! = 1*2*3*4*5*6, 7! = 1*2*3*4*5*6*7 - зачем? 7! = 7*6!
Лучше вычислять очередной член суммы на основании уже вычисленного предыдущего.
3. pow(-1,k) - как-то сомнительно выглядит. Некоторые трансляторы требуют положительного значения 1-го аргумента. Рекомендация пункта 2 снимает и эту проблему
Спасибо за ответ!
1. Тут вопросов нету.
2. Как реализовать? С++ учу пару месяцев, знания минимальны. Можно даже название литературы.
3. А можно ли реализовать отдельную функцию (например extent) вычисляющую число X в степени Y? Я просто сомневаюсь что получится это, с отрицательными значениями.
Байт
Эксперт C
 Аватар для Байт
15059 / 9461 / 1385
Регистрация: 24.12.2010
Сообщений: 17,516
23.10.2013, 11:57     Вычислить сумму #5
Лови
C++
1
2
3
4
5
6
7
double s, a, d;
s = a = 1
for(k=1; k<=n; k++) {
  d = k;
  a *= (-1)*(d+1)/(d*d);
  s += a;
}
Если что-то тебя смутит, посмотри чему равно ak/ak-1

Добавлено через 3 минуты
Цитата Сообщение от Harmonster Посмотреть сообщение
А можно ли реализовать отдельную функцию (например extent) вычисляющую число X в степени Y?
Конечно! Можешь реализовать эту функцию для целых Y, Назвать ее double HarmonPow(double x, int Y) и не зависеть от капризов транслятора
Yandex
Объявления
23.10.2013, 11:57     Вычислить сумму
Ответ Создать тему
Опции темы

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