Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
-1 / 1 / 0
Регистрация: 08.12.2019
Сообщений: 177
1

Реккурентно вычислить сумму ряда

28.01.2021, 10:17. Показов 637. Ответов 5

Author24 — интернет-сервис помощи студентам
Сумма ряда следующая: https://www.kontrolnaya-rabota... 9&N=n&n0=1
Вот код:
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    int x;
    cout << "Введите число x: ";
    cin >> x;
    int n;
    cout << "Введите, до какого члена ряда хотите вывести значения на экран: ";
    cin >> n;
    int sum = 0;
    //a(n) = (-1)^(n-1) * x^(n-1) * n;  a(n+1) = (-1)^n * x^n * (n+1);  a(n+1) / a(n) = -x - x/n;  a(n+1) = a(n) * (-x - x/n)
    int a = 1;
    int temp = 0;
    cout << "Ряд следующий: ";
    for (int i = 1; i <= n; i++)
    {
        temp = sum;
        sum += a;
        a *= (-n - 1)*x/n;
        temp = sum - temp;
        cout << temp << ", ";
    }
    cout << " А его сумма равна: " << sum;
}
Компилятор неправильно считает сумму ряда. Он тупо умножает (-1) на x, а должен еще домножить на (-x/n).
Если умножаю последовательно, то он вообще выдает ряд 1, 0, 0, 0, 0 и т.д.
В чем проблема может быть?

Добавлено через 1 час 29 минут
Решил проблему, заменив в следующих строчках:
Цитата Сообщение от nottheprogramer Посмотреть сообщение
temp = sum;
        sum += a;
        a *= (-n - 1)*x/n;
        temp = sum - temp;
        cout << temp << ", ";
n на i. забыл, что в цикле надо указывать i.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2021, 10:17
Ответы с готовыми решениями:

Вычислить значение выражения включающего сумму ряда и произведение ряда
Всем привет, я только начинающий в С++. Можете помочь с лабороторной? Сигма для меня это что-то...

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

Вычислить выражение включающее сумму ряда и произведение ряда
Всем привет! Есть условие такое: И есть код: #include &lt;cstdlib&gt; #include &lt;iostream&gt; using...

Вычислить сумму членов ряда с точностью до члена ряда, меньшего Е. Код есть, но ошибку не могу найти
Задание: Вычислить сумму членов ряда с точностью до члена ряда, меньшего Е. Формула: S= 1/(1*3) +...

5
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.01.2021, 10:54 2
Цитата Сообщение от nottheprogramer Посмотреть сообщение
int sum
Почему int? Там же деление происходит. Замените на double, и другие переменные тоже.
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
28.01.2021, 11:28 3
Цитата Сообщение от nottheprogramer Посмотреть сообщение
C++
1
a *= (-n - 1)*x/n;
- бред потому что пишете, компилятор нивчем не виноват.

Добавлено через 25 минут
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
39
40
41
42
43
44
45
#include <iostream>
using namespace std;
 
double Rec(double x, int n)
{
    static int i = 1;
    static double s = 1, st = 1;
    static char Znak = 1;
    
    if(i >= n)
        return s;
    
    cout << "i = " << i << ",\t" << "s = " << s << ",\t" << "Znak = " << (int)Znak << ",\t" << '\n';
    i++;
    Znak *= -1;
    st *= x;
    s += Znak*st*i;
    Rec(x, n);
}
 
int main()
{
    int i, n;
    double x, s, st;
    char Znak;
 
    n = 7;
    s = 1;
    //тут ввод x
    x = 0.2;
    st = 1;
    Znak = 1;
 
    for(i = 1; i < n; i++)
    {
        Znak *= -1;
        st *= x;
        s += Znak*st*(i+1);
        cout << "i = " << i << ",\t" << "s = " << s << ",\t" << "Znak = " << (int)Znak << ",\t" << '\n';
    }
 
    cout << "s = " << s << '\n';
    cout << "Rec = " << Rec(x, n) << '\n';
    return 0;
}
0
-1 / 1 / 0
Регистрация: 08.12.2019
Сообщений: 177
28.01.2021, 22:31  [ТС] 4
Цитата Сообщение от likehood Посмотреть сообщение
Почему int?
А ты посмотри, какой у меня x, а также перейди по ссылке и попробуй получить из целочисленного типа данных дробный)) тогда посмотрим, что надо будет заменить.
Цитата Сообщение от likehood Посмотреть сообщение
Замените на double, и другие переменные тоже.
А вот возьму и не заменю))
Цитата Сообщение от FFPowerMan Посмотреть сообщение
- бред потому что пишете, компилятор нивчем не виноват.
А вы сами не бред написали? Может быть прочтете до конца. Я всем подряд говорю, что программист, каким бы он ни был, не будет всегда писать идеальный код, для этого собственно компилятор и нужен. Прочитай, что я добавил спустя полтора часа, я заменил как надо и ответ получил очень даже правильный, так что бред тут пишешь только ты))
Я бы мог перейти еще на личности, мол код у вас не очень то красивый, но это понятие субъективное, так что давай без агрессии мой юный дружок.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
28.01.2021, 22:54 5
Цитата Сообщение от nottheprogramer Посмотреть сообщение
А ты посмотри, какой у меня x
Это не важно. И, кстати, я к вам обратился на вы, прошу поступать аналогично.
Цитата Сообщение от nottheprogramer Посмотреть сообщение
а также перейди по ссылке
Не люблю переходить по левым ссылкам. И вообще, здесь не приветствуется, когда задания приводятся в виде ссылки на другой сайт. Приветствуется, когда задание записывается своими руками. Для записи формул есть встроенный редактор формул. В крайнем случае можно картинку прикрепить.
Цитата Сообщение от nottheprogramer Посмотреть сообщение
попробуй получить из целочисленного типа данных дробный
C++
1
2
3
4
// так
double(x)
// или так
1.0*x
1
-1 / 1 / 0
Регистрация: 08.12.2019
Сообщений: 177
28.01.2021, 23:11  [ТС] 6
Цитата Сообщение от likehood Посмотреть сообщение
Это не важно.
Для меня важно)) я решил так сделать, и я это сделал
Цитата Сообщение от likehood Посмотреть сообщение
И, кстати, я к вам обратился на вы, прошу поступать аналогично.
Ой, ну ты уж, ой, вы уж простите меня, где же мой этикет... А может del эти стереотипы и будем здраво мыслить как взрослый человек с человеком??
Цитата Сообщение от likehood Посмотреть сообщение
Не люблю переходить по левым ссылкам.
А там как раз наглядно и будет показано ненужность типа double при типе int для x.
Цитата Сообщение от likehood Посмотреть сообщение
// так
double(x)
// или так
1.0*x
Блин, молодец, воспользовался ситуацией, где я ничего не пояснил. Дело в том, что если int x, то в данном ряде double sum получится все равно целочисленным.

Добавлено через 6 минут
Если вы обиделись, что я другому участнику темы обратился на вы, а к вам на ты, то это не значит неуважение, это значит что мне глубоко del каким из этих местоимением пользоваться. Если речь про уважение, то я думаю объяснять не стоит, что я, как и любой другой уважающий себя человек, лицемерно "уважать" другого не будет. Я говорю вам открыто и прямо, я вас (обоих) не уважаю, ибо я вас не знаю. Понимайте это как хотите, но думаю понимающему человеку ничего разъяснять не стоит. Кстати, хочу отметить, что на вы удобнее обращаться как раз таки во множественном числе, а на ты - в единственном. Именно для этого эти местоимения и задумывались, а потом уже что-то люди извратили. Ладно хоть вы слово "Вы" с большой буквы не потребовали написать
0
28.01.2021, 23:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2021, 23:11
Помогаю со студенческими работами здесь

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

Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N
Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N. Не могу найти где...

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

Вычислить сумму ряда
Срочно, помогите, пожалуйста, решить задачу. Дано действительное число X и целое число N (&gt; 0),...

Вычислить сумму ряда
помогите написать программу на с++

Вычислить сумму ряда
Помогите найти ошибку в коде: #include &lt;iostream&gt; using namespace std; int main(){ {float...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru