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

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

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

Author24 — интернет-сервис помощи студентам
Нужно найти сумму первых 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2014, 21:58
Ответы с готовыми решениями:

Найти сумму квадратов первых n чётных натуральных чисел
Найти сумму квадратов первых n чётных натуральных чисел (n вводится с клавиатуры). Только начал...

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

Найти и напечатать значение первых четырех совершенных натуральных чисел
Найти и напечатать значение первых четырех совершенных натуральных чисел. Подсказка: совершенным...

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

15
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2014, 22:04 2
MEverik, почему в строках 12,15 запятые в конце?
0
0 / 0 / 1
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 22:06  [ТС] 3
ошибка, исправил
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2014, 22:07 4
MEverik, и рекурсия подразумевает вызов функции из самой себя. А тут кроме main() других нет.
0
0 / 0 / 1
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 22:12  [ТС] 5
как мне правильно вызвать "next", чтобы начало получатся
C++
1
2
3
int main()
int next() 
{...}
неверно?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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
0 / 0 / 1
Регистрация: 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
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2014, 22:50 8
MEverik, Вы, по-моему, вообще не понимаете что делаете.
main() это главная функция, с которой начинается программа. Из нее должен быть вызов Ваших функций. В 5 строке точка с запятой не нужна. А в 4ой у main должно быть тело.
0
0 / 0 / 1
Регистрация: 25.03.2014
Сообщений: 13
06.05.2014, 23:14  [ТС] 9
У меня с этим не сильно,когда я "проходил" с++ для меня это как простое начало задачи, как допустим predicates в прологе - составляющие задачи, а потом пишем задачу. Все на уровне новичка
0
7 / 7 / 5
Регистрация: 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
0 / 0 / 1
Регистрация: 25.03.2014
Сообщений: 13
07.05.2014, 11:39  [ТС] 11
Цитата Сообщение от SANYAMILITARY Посмотреть сообщение
Понимаю, что программа не совсем гладкая и правильная, но как мог.
спасибо, я буду разбираться
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.05.2014, 11:47 12
Цитата Сообщение от MEverik Посмотреть сообщение
спасибо, я буду разбираться
Я Вам в сообщении #6 привел элементарнейший код, решающий задачу.
0
0 / 0 / 1
Регистрация: 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
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
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
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
07.05.2014, 13:46 16
Tulosba, не заметил что нужна рекурсия
0
07.05.2014, 13:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2014, 13:46
Помогаю со студенческими работами здесь

Найти разность между суммой квадратов и квадратом суммы первых ста натуральных чисел
Сумма квадратов первых десяти натуральных чисел равна 12 + 22 + ... + 102 = 385 Квадрат суммы...

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

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

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


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

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