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

1*2+2*3*4+n...2n вычислить - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
tesler
 Аватар для tesler
3 / 3 / 0
Регистрация: 08.04.2011
Сообщений: 197
02.10.2011, 14:03     1*2+2*3*4+n...2n вычислить #1
1*2+2*3*4+n...2n помогите пожалуйста (хотя бы начало) вычислить эту формулу. вообще это выглядит так при n=6: (1*2)+(2*3*4)+(3*4*5*6)+(4*5*6*7*8)+(5*6*7*8*9*10)+(6*7*8*9*10*11*12) (скобки чтобы виднее было поставлены)
это примерно выглядит так:
for i :=1 to n do
S:=i*(i+1)
S:=i*(i+1)*(i+2)
S:=i*(i+1)*(i+2)*(i+3) (это чисто схематично) не получается постоянно увеличивать множитель (i+1) и складывать всё это дело. как это сделать???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 14:03     1*2+2*3*4+n...2n вычислить
Посмотрите здесь:

C++ Вычислить по формуле. ВЫчислить с заданной точностью
C++ Вычислить в одномерном массиве вычислить сумму элементов массива...
C++ Вычислить в одномерном массиве вычислить номер максимального элемента

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
02.10.2011, 14:36     1*2+2*3*4+n...2n вычислить #2
Цитата Сообщение от tesler Посмотреть сообщение
1*2+2*3*4+n...2n помогите пожалуйста (хотя бы начало) вычислить эту формулу. вообще это выглядит так при n=6: (1*2)+(2*3*4)+(3*4*5*6)+(4*5*6*7*8)+(5*6*7*8*9*10)+(6*7*8*9*10*11*12) (скобки чтобы виднее было поставлены)
это примерно выглядит так:
for i :=1 to n do
S:=i*(i+1)
S:=i*(i+1)*(i+2)
S:=i*(i+1)*(i+2)*(i+3) (это чисто схематично) не получается постоянно увеличивать множитель (i+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
28
29
30
31
32
33
34
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    unsigned long i,j,n,sum,mult;//ULONG - чтобы n > 0 и в sum и mult всё поместилось
    do
    {
        std::cout<<"Enter n : ";std::cin>>n;
        sum = 0;//Обнулили сумму
        for(i = 1; i <= n; i++)
        {
            mult = 1;
            for(j = i; j < i + (i + 1); j++)
            {
                std::cout<<j;
                if(j < i + (i + 1) - 1)
                    std::cout<<"*";
                else
                    if(i < n)
                        std::cout<<" + ";
                    else
                        std::cout<<"\r\n";
                mult *= j;
            }
            sum += mult;
        }
        std::cout<<"sum = "<<sum<<"\r\n";
        std::cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Миниатюры
1*2+2*3*4+n...2n вычислить  
-=ЮрА=-
Заблокирован
Автор FAQ
02.10.2011, 14:41     1*2+2*3*4+n...2n вычислить #3
Это лишь для отображения выводимой последовательности(да и для себя при отладке использовал), при жлеании можно убрать...
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(j < i + (i + 1) - 1)
* * * * * * * * * * * * * * * * * * * * std::cout<<"*";
* * * * * * * * * * * * * * * * else
* * * * * * * * * * * * * * * * * * * * if(i < n)
* * * * * * * * * * * * * * * * * * * * * * * * std::cout<<" + ";
* * * * * * * * * * * * * * * * * * * * else
* * * * * * * * * * * * * * * * * * * * * * * * std::cout<<"\r\n";
LosAngeles
Заблокирован
02.10.2011, 16:00     1*2+2*3*4+n...2n вычислить #4
для любителей метапрограммирования и автору для расширения кругозора:
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
template <int x> struct factorial
{
    enum { value = factorial<x-1>::value * x };
};
 
template <> struct factorial<1>
{
    enum { value = 1 };
};
 
template <> struct factorial<0>
{
    enum { value = 1 };
};
 
 
 
/**Слагаемые*/
template <int x> struct summand
{
    enum { value = factorial<x*2>::value / factorial<x-1>::value };
};
 
 
 
/**Искомая сумма ряда*/
template <int x> struct range
{
    enum { value = (range<x-1>::value + summand<x>::value) };
};
 
template <> struct range<1>
{
    enum { value = summand<1>::value };
};
 
 
int main()
{
    cout << range<4>::value << endl;
 
    system("pause");
 
    return 0;
}
Добавлено через 17 минут
работает впритык до 6, но если надыбыть компилятор с С++11 то можно также unsigned long запихать в enum и тогда чуть побольше можно взять)
tesler
 Аватар для tesler
3 / 3 / 0
Регистрация: 08.04.2011
Сообщений: 197
02.10.2011, 19:09  [ТС]     1*2+2*3*4+n...2n вычислить #5
ЮРА, я вот только начинаю изучать си++, вы не могли бы объяснить что значит
C++
1
std::cout<<"*";
само вот :: эти двоеточия, что это за операция (остальное впринципе понятно),
спасибо за ответы, очень помогли
lenin
 Аватар для lenin
1 / 1 / 0
Регистрация: 25.09.2011
Сообщений: 15
02.10.2011, 19:24     1*2+2*3*4+n...2n вычислить #6
2 tesler,
http://www.askdev.ru/c-plus-plus/147...-namespace-std
tesler
 Аватар для tesler
3 / 3 / 0
Регистрация: 08.04.2011
Сообщений: 197
02.10.2011, 20:44  [ТС]     1*2+2*3*4+n...2n вычислить #7
в коде (первом) объявлено
C++
1
2
3
#include <iostream>
#include <conio.h>
using namespace std;
, это значит что в последующем я могу не использовать этот префикс
C++
1
 std::
я правильно понимаю???
-=ЮрА=-
Заблокирован
Автор FAQ
02.10.2011, 21:05     1*2+2*3*4+n...2n вычислить #8
Цитата Сообщение от tesler Посмотреть сообщение
само вот :: эти двоеточия, что это за операция (остальное впринципе понятно),
, на пальцах так существуют различные пространсва имён например stdin(определённое в stdio.h - доступ в стиле Си) и std - обявленное в iostream(доступ к буферу консоли в стиле С++). Этот оператор :: указывает на область видимости операндов следующих за ним(http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B)
Не хочу вдаваться зачем это нужно и впринципе в вашем случае можно писать cout cin без std

Добавлено через 1 минуту
Цитата Сообщение от tesler Посмотреть сообщение
я правильно понимаю???
- нет это означает что вы будете использовать фунции объявленные в iostream и в дальнейшем в программе не будет проблем при пересечении с аналогичными именами функции объявленных в других namespace-ах

Добавлено через 4 минуты
tesler, Работайте с кодом ниже, он более понятен
Код С++
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    unsigned long i,j,n,sum,mult;//ULONG - ÷òîáû n > 0 ГЁ Гў sum ГЁ mult ГўГ±Вё ïîìåñòèëîñü
    do
    {
        cout<<"Enter n : ";cin>>n;
        sum = 0;//ГЋГЎГ*óëèëè ñóììó
        for(i = 1; i <= n; i++)
        {
            mult = 1;
            for(j = i; j < i + (i + 1); j++)
            {
                cout<<j;
                if(j < i + (i + 1) - 1)
                    cout<<"*";
                else
                    if(i < n)
                        cout<<" + ";
                    else
                        cout<<"\r\n";
                mult *= j;
            }
            sum += mult;
        }
        cout<<"sum = "<<sum<<"\r\n";
        cout<<"Press Y for new input\r\n";
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
tesler
 Аватар для tesler
3 / 3 / 0
Регистрация: 08.04.2011
Сообщений: 197
02.10.2011, 21:44  [ТС]     1*2+2*3*4+n...2n вычислить #9
спасибо!
-=ЮрА=-
Заблокирован
Автор FAQ
30.09.2012, 17:52     1*2+2*3*4+n...2n вычислить #10
По просьбе загадочного DiKz в ВК выкладываю вариант для BorlandC(Turbo C)
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
#include <stdio.h>//printf/scanf
#include <conio.h>//getch
#include <ctype.h>//toupper
 
int main()
{
    //ULONG - чтобы n > 0 и в sum и mult всё поместилось
    unsigned long i = 0;
    unsigned long j = 0;
    unsigned long n = 0;
    unsigned long sum=0;
    unsigned long mult = 1;
    do
    {
        printf("Enter n : ");scanf("%u",&n);
        getchar();//Убарли \n от ввода
        sum = 0;//Обнулили сумму
        for(i = 1; i <= n; i++)
        {
            mult = 1;
            for(j = i; j < i + (i + 1); j++)
            {
                printf("%d", j);
                if(j < i + (i + 1) - 1)
                    printf("*");
                else
                    if(i < n)
                        printf(" + ");
                    else
                        printf("\r\n");
                mult *= j;
            }
            sum += mult;
        }
        printf("sum = %d\r\n", sum);
        printf("Press Y for new input\r\n");
    }
    while(toupper(getch()) == 'Y');
    return 0;
}
Миниатюры
1*2+2*3*4+n...2n вычислить   1*2+2*3*4+n...2n вычислить  
Вложения
Тип файла: rar DIKZ.exe.rar (9.2 Кб, 4 просмотров)
Proger_01
Сообщений: n/a
01.10.2012, 10:41     1*2+2*3*4+n...2n вычислить #11
Юра, я писал тебе в контакте, я в агенте постоянно, может лучше там напрямую связаться и ты поможешь мне?
-=ЮрА=-
01.10.2012, 16:37
  #12

Не по теме:

Цитата Сообщение от Proger_01 Посмотреть сообщение
Юра, я писал тебе в контакте, я в агенте постоянно, может лучше там напрямую связаться и ты поможешь мне?
- хорошо пиши, но в данный момент я очень загружен.

Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
01.10.2012, 16:57     1*2+2*3*4+n...2n вычислить #13
Цитата Сообщение от tesler Посмотреть сообщение
ЮРА, я вот только начинаю изучать си++, вы не могли бы объяснить что значит
C++
1
std::cout<<"*";
само вот :: эти двоеточия, что это за операция (остальное впринципе понятно),
спасибо за ответы, очень помогли
это разрешение области видимости. Означает что cout относится к пространству имён std.
-=ЮрА=-
01.10.2012, 17:12     1*2+2*3*4+n...2n вычислить
  #14

Не по теме:

SeregaC++, Я лучше дам линк на запись в моём блоге using namespace std и std:: надоело смотреть! - прочтя её всё станет ясно, зачем, что это и нужно ли оно. А так это раскрытие области видимости, т.е полученя доступа к базовым методам, переменным какого либо класса или же namespace как в данном случае. Лично я уже не пишу std::cout а пишу using namespace std после хедеров и использую привычные глазу cin, cout

Yandex
Объявления
01.10.2012, 17:12     1*2+2*3*4+n...2n вычислить
Ответ Создать тему
Опции темы

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