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

Получить все пятерки натуральных чисел сумма которых равна заданному числу

28.03.2018, 08:16. Показов 1313. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести с клавиатуры натуральное число n(n>=5). Получить все пятерки натуральных чисел x1,x2,x3,x4,x5 такие, что x1>=x2>=x3>=x4>=x5 и x1+….+x5=n.
Помогите решить задачу через функцию,пожалуйста!
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
#include <iostream>  
#include <math.h> 
using namespace std;
int main(){
    int n, x1, x2, x3, x4, x5;;
    cout << "Vvedite luboe 4islo ot 5 " << endl;
    cin >> n;
    if (n >= 5)
        for (x5 = 1; x5 <= n - 4; x5++)
 
            for (x4 = x5; x4 <= n - 4; x4++)
 
                for (x3 = x4; x3 <= n - 4; x3++)
 
                    for (x2 = x3; x2 <= n - 4; x2++)
 
                    {
                        x1 = n - x2 - x3 - x4 - x5;
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
    else
        cout << "Prosilos' je ot 5..." << endl;
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2018, 08:16
Ответы с готовыми решениями:

Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N
Определить количество трехзначных натуральных чисел, сумма цифр которых равна заданному числу N.

Определить количество натуральных трехзначных чисел, сумма цифр которых равна заданному числу N
1. Определить количество натуральных трехзначных чисел, сумма цифр которых равна заданному числу N.

Определить количество трёхзначных натуральных чисел сумма цифр которых равна заданному числу
Всем Привет! Помогите пожалуйста написать простенькую программу без сильно замороченного кода на...

Получить все четырехзначные числа, сумма цифр которых равна заданному числу n
Здраствуйте, помогите сделать лабораторную, программирование мне не понадобиться так что не хочу...

5
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
28.03.2018, 08:51 2
так?
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
#include <iostream>
#include <math.h>
using namespace std;
 
int fu(int n, int x2, int x3, int x4, int x5)
{
    return n - x2 - x3 - x4 - x5;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, x1, x2, x3, x4, x5;;
    cout << "Введите число от 5 " << endl;
    cin >> n;
    if (n >= 5)
        for (x5 = 1; x5 <= n - 4; x5++)
 
            for (x4 = x5; x4 <= n - 4; x4++)
 
                for (x3 = x4; x3 <= n - 4; x3++)
 
                    for (x2 = x3; x2 <= n - 4; x2++)
 
                    {
                        x1=fu(n,x2,x3,x4,x5);
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
    else
        cout << "Просилось же от 5..." << endl;
    system("pause");
}
Добавлено через 18 минут
или так
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
#include <iostream>
#include <math.h>
using namespace std;
 
void fu(int n, int x1, int x2, int x3, int x4, int x5)
{
    if (n >= 5)
    {
        for (x5 = 1; x5 <= n - 4; x5++)
        {
            for (x4 = x5; x4 <= n - 4; x4++)
            {
                for (x3 = x4; x3 <= n - 4; x3++)
                {
                    for (x2 = x3; x2 <= n - 4; x2++)
                    {
                        x1= n - x2 - x3 - x4 - x5;
                        if (x1 > x2 - 1)
                            cout << "x5=" << x5 << " x4=" << x4 << " x3=" << x3 << " x2=" << x2 << " x1=" << x1 << endl;
                    }
                }
            }
        }
    }
    else
    {
        cout << "Просилось же от 5..." << endl;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, x1, x2, x3, x4, x5;
    cout << "Введите число от 5 " << endl;
    cin >> n;
    fu(n,x1,x2,x3,x4,x5);
    system("pause");
}
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.03.2018, 12:21 3
LemurDC, Ваши оба решения, скорее всего, верные (подробно коды не анализировал, но я вам верю). Но уж больно скушные. А если слагаемых не 5, а 7? Или 10? Что, всю эту кишку вложенных циклов переписывать?
Есть более интересный подход, и при любом n и k можно обойтись парой циклов.
Для начала надо выяснить, является ли 0 натуральным числом. В математике есть 2 мнения на этот счет. Удобнее решать, если 0 входит. Ежели нет, но сводим к решению в неотрицательных числах, заменяя n на n-k (единички добавим при выводе)
Идея такая. Для начала полагаем x[0] = n, остальные нули. Представим все решение в виде столбиков не увеличивающейся высоты. И идем справа налево, пока не находим столбик, с которого можно снять единичку. И перераспределяем камешки правее этой точки, стараясь положить на самый левый столбик побольше. Для n = 7, k=4 это будет выглядеть так
7 0 0 0
6 1 0 0
5 2 0 0
5 1 1 0
4 3 0 0
4 2 1 0
4 1 1 1
3 3 1 0
3 2 2 0
3 2 1 1
2 2 2 1
Где-то на форуме эта задача (именно в общем виде) решалась...

Добавлено через 3 минуты
Получить все пятерки натуральных чисел удовлетворяющих заданному условию
это не решение, но тема Один в Один. Найдя хорошее решение, мы убьем как минимум 2-х зайцев
0
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
28.03.2018, 12:29 4
Байт, если честно, я и сам не читал код. Просто взял код ТСа и добавил функцию.
Цитата Сообщение от Байт Посмотреть сообщение
Получить все пятерки натуральных чисел удовлетворяющих заданному условию
это не решение, но тема Один в Один. Найдя хорошее решение, мы убьем как минимум 2-х зайцев
сейчас буду читать и вникать, спасибо)
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.03.2018, 12:37 5
LemurDC, Вот покопался немного...
Разбиение числа n на k слагаемых
Кажется, решено.
Рекурсия рулит!
0
0 / 0 / 0
Регистрация: 26.02.2018
Сообщений: 10
28.03.2018, 16:07  [ТС] 6
А так и должно быть???
Миниатюры
Получить все пятерки натуральных чисел сумма которых равна заданному числу  
0
28.03.2018, 16:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2018, 16:07
Помогаю со студенческими работами здесь

Получить все трехзначные натуральные числа, сумма цифр которых равна заданному числу
очень срочно. нужна программа для вот этой задачи, если нетрудно, то с комментариями Дано...

Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу
#include &lt;iostream&gt; using namespace std; int main(){ int N, i, j; cout&lt;&lt;&quot;Vvedite...

Получить матрицу С удвоив все значения матрицы А, сумма индексов которых меньше или равна заданному числу В
Вот сама задача: задано целочисленный массив А размера N x N. Получить массив С удвоив все значения...

Найти 3 натуральных числа сумма квадратов которых равна заданному числу
Дано натуральное n. Указать x,y,z таких натуральных чисел, что n=x2 +y2 +z2 и x&lt;=y&lt;=z , используя...


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

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