Вычислить 1*2 + 2*3*4 + 3*4*5*6 +

133
03 ноября 2019, 22:10

Мне нужно вычислить 1*2 + 2*3*4 + 3*4*5*6 + ... в моей программе при вводе 2 выдаёт 32,а должно 26

#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_CTYPE, "rus");
    int n;
    int p = 1;
    cout << "Введи число: ";
    cin >> n;
    for (int i = 0, s = 0, d = 0,j = 0; i < 2 * n; i++, j = i + 1 , p = p * j, s = s + p) {
            cout << "Результат: " << s << endl;
        }

    }
Answer 1

Думаю, не стоит мудрить, а просто реализовать шаг за шагом

int n;
int sum = 0;
cout << "Введи число: ";
cin >> n;
for (int start = 1; start <= n; start++) {
    int product = 1;
    for (int j = start; j <= 2 * start; j++)
        product *= j;
    sum += product;
}
cout << "Результат: " << sum << endl;

P.S. Сейчас увидел прошлую тему автора - так в ней на Паскале точно так же и сделано.

Answer 2

Я бы действовал так, не начиная считать каждый член суммы заново и не делая второго цикла:

int main(int argc, const char * argv[])
{
    unsigned int n;
    cin >> n;
    unsigned long long sum = 2, term = 2;    // Первоначальные значения для n == 1
    for(unsigned int i = 2; i <= n; ++i) // Цикл от 2 до n
    {
        term /= i-1;                     // Новый член получается из старого делением на 
        sum += term *= (2*i-1)*2*i;      // первый множитель и умножением на еще два
    }
    cout << sum << endl;
}

И еще - для типа результата int можно просто сделать табличку из 7 чисел - все равно дальше начинается переполнение :) Впрочем, даже unsigned long long тоже хватит только на 14 значений...

READ ALSO
Зачем нужна динамическая память

Зачем нужна динамическая память

Раньше я думал что динамическая память нужна для того чтобы выделять там память под массивы типов, размер которых не известен во время компиляцииСейчас...

153
Как подойти к решению такой задачи? [закрыт]

Как подойти к решению такой задачи? [закрыт]

Напишите функцию, которая принимает на вход два числа, и возвращает сумму всех чисел между ними, которые делятся на 5 или на одно из этих...

142
Свой header(.h) и компиляция нескольких файлов [закрыт]

Свой header(.h) и компиляция нескольких файлов [закрыт]

Я разделил свою программу на три файлаВсе они находятся в одной папке и запускаются в компиляторе g++ как g++ main

148
MySQl BIND ip c++

MySQl BIND ip c++

как сделать бинд в mysql connector c++?

152