С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
#1

Найти сумму первых n-четных натуральных чисел (найти ошибку) - C++

06.05.2014, 21:58. Просмотров 1571. Ответов 15
Метки нет (Все метки)

Нужно найти сумму первых n-четных натуральных чисел. Ошибка вылетает на 13 строке, должно быть я не правильно код составил, алгоритм не тот может. Помогите мне включить эту рекурсию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
 int sum=0;
 int n;
 int i=2;
 cout << "Enter n: ";
 cin >> n;
 while(i<=n) 
 sum =+ i,
 next = (i=i+2);
 while(i<=n)
 sum =+ i,
 return (next);
 cout << sum;
 _getch();
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 21:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти сумму первых n-четных натуральных чисел (найти ошибку) (C++):

Дано натуральное число N. Найти сумму первых n натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5 - C++
Дано натуральное число N. Найти сумму первых n натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5.

Найти 10 первых натуральных чисел, оканчивающихся на цифру 7 кратных числу 9, не меньших 100 (Pascal -> C++) - C++
Найти 10 первых натуральных чисел, оканчивающихся на цифру 7 кратных числу 9 и находящихся в интервале левая граница которого равна 100 ...

Найти 15 первых натуральных чисел, делящихся нацело 19 и находящихся в интервале , левая граница которого равна 100. - C++
Найти 15 первых натуральных чисел, делящихся нацело 19 и находящихся в интервале , левая граница которого равна 100. Привет всем вот мой...

Найти сумму целых отрицательных чисел удовлетворяющих условию (найти и исправить ошибку в коде) - C++
#include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() { int y = 0; for(int i = -21; i &lt; -99; i+=3) ...

Найти сумму первых K чисел - C++
Найти сумму первых K чисел ряда: 1+1/3+1/5+1/7...

6.34. Найти 15 первых натуральных чисел, делящихся нацело на 19 и нахо-дящихся в интервале, левая граница которого равна 100 - C++
6.34. Найти 15 первых натуральных чисел, делящихся нацело на 19 и нахо-дящихся в интервале, левая граница которого равна 100

15
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2014, 22:04 #2
MEverik, почему в строках 12,15 запятые в конце?
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 22:06  [ТС] #3
ошибка, исправил
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2014, 22:07 #4
MEverik, и рекурсия подразумевает вызов функции из самой себя. А тут кроме main() других нет.
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 22:12  [ТС] #5
как мне правильно вызвать "next", чтобы начало получатся
C++
1
2
3
int main()
int next() 
{...}
неверно?
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2014, 22:15 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int sumeven( int n )
{
    if( n == 0 ) return 0;
    return sumeven(n-1) + n * 2;
}
 
int main() 
{
    std::cout << sumeven(4) << std::endl;
    return 0;
}
Будут вопросы по коду - задавайте.
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 22:38  [ТС] #7
Я добавил функцию next, и теперь по идее ее можно возвращать, т.к. раньше ее совсем не было в задаче я так понимаю, но ошибка в {. Что то не по плану
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
int main();
int next(int n);
{
 int sum=0;
 int n;
 int i=2;
 cout << "Enter n: ";
 cin >> n;
 while(i<=n) 
 sum =+ i
 next = (i=i+2);
 while(i<=n)
 sum =+ i
 return (next);
 cout << sum;
 _getch();
 return 0;
}
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2014, 22:50 #8
MEverik, Вы, по-моему, вообще не понимаете что делаете.
main() это главная функция, с которой начинается программа. Из нее должен быть вызов Ваших функций. В 5 строке точка с запятой не нужна. А в 4ой у main должно быть тело.
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 23:14  [ТС] #9
У меня с этим не сильно,когда я "проходил" с++ для меня это как простое начало задачи, как допустим predicates в прологе - составляющие задачи, а потом пишем задачу. Все на уровне новичка
0
SANYAMILITARY
7 / 7 / 3
Регистрация: 07.05.2014
Сообщений: 56
07.05.2014, 00:57 #10
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
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int PAR(int n)//простая ф-ция без рекурсии
{
    int sum(0);
    int temp(1);
    while(n>0 && temp<=n)
    {
        if(temp%2==0 && temp<=n)
        {
            sum += temp;
            temp++;
        }
        else
        {
            temp++;
        }
    }
    return sum;
}
 
int REKYRS(int n)//ф-ция использующая рекурсию
{
    if(n==0 || n==1) return 0;
    if (n%2==0 && n>0)
    {
       return n+REKYRS(n-2);
    }
    else if (n%2 > 0)
    {
        n=n-1;
        return n+REKYRS(n-2);
    }
 
}
 
 
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    cout << "Enter number n: ";
    int n;
    cin >> n;
 
    cout << "PAR :" << PAR(n) << endl;
    cout << "REKYRS :" << REKYRS(n) << endl;
 
    _getch();
    return 0;
}
Вот программа с 2-мя функциями. Выполняют туже задачу. Но одна использует рекурсию, другая нет.

Добавлено через 1 минуту
Понимаю, что программа не совсем гладкая и правильная, но как мог.
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
07.05.2014, 11:39  [ТС] #11
Цитата Сообщение от SANYAMILITARY Посмотреть сообщение
Понимаю, что программа не совсем гладкая и правильная, но как мог.
спасибо, я буду разбираться
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.05.2014, 11:47 #12
Цитата Сообщение от MEverik Посмотреть сообщение
спасибо, я буду разбираться
Я Вам в сообщении #6 привел элементарнейший код, решающий задачу.
0
MEverik
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 13
07.05.2014, 13:30  [ТС] #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Я Вам в сообщении #6 привел элементарнейший код, решающий задачу.
В вашем коде я разобрался не до конца, можете пояснить строки без комментариев и там где комментарии не верные?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int sumeven( int n ) // функция которую можно вызвать состоящая из n 
{
    if( n == 0 ) return 0; // если n=0, возвращаем 0
    return sumeven(n-1) + n * 2; //  иначе возвращаем функцию
}
 
int main() 
{
    std::cout << sumeven(4) << std::endl; // вывод на экран
    return 0;
}
0
Jewbacabra
Эксперт PHP
2702 / 2290 / 854
Регистрация: 24.04.2014
Сообщений: 6,881
07.05.2014, 13:38 #14
так будет еще проще:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
int sumeven( int n )
{
    return n*(n+1);
}
 
int main() 
{
    std::cout << sumeven(50) << std::endl; // вывод на экран
    return 0;
}
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.05.2014, 13:41 #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> // подключаем заголовочный файл для обеспечения возможности вывода на экран
 
int sumeven( int n ) // функция вычисления суммы первых n четых натуральных чисел (т.е. 2+4+6 ... +n*2)
{
    if( n == 0 ) return 0; // если чисел 0, то возвращаем 0
    return sumeven(n-1) + n * 2; // иначе возвращаем функцию суммы для (n-1) и (n*2). Здесь как раз рекурсия (вызов самой себя)
}
 
int main() 
{
    std::cout << sumeven(4) << std::endl; // вывод на экран значения посчитанного для n = 4.
    return 0;
}
Добавлено через 2 минуты
Jewbacabra, молодец, что в курсе формулы алгебраической прогрессии, но ТС надо функцию с рекурсией, если я правильно понял.
0
07.05.2014, 13:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 13:41
Привет! Вот еще темы с ответами:

Найти сумму квадратов натуральных чисел от 1 до К - C++
Найти сумму квадратов натуральных чисел от 1 до К. При вычислении квадрата очередного числа использовать формулу: ...

Найти сумму последовательности натуральных чисел - C++
Найдите сумму последовательности натуральных чисел, если признаком окончания конца последовательности является два подряд идущих числа 0. ...

Вычислить сумму первых десяти натуральных чисел - C++
Нужно написать программу на С++, которая вычисляет сумму первых десяти натуральных чисел.Прошу помощи т.к. сам в С++ почти ничего не...

Вычислить сумму квадратов первых 7 натуральных чисел - C++
Люди помогите пожалуйста решить: 1. Вычислить сумму квадратов первых 7 натуральных чисел.


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

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

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