Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9

Ввести число. Используя рекурсивную функцию, получить все возможные перестановки цифр этого числа

03.01.2014, 16:04. Показов 1898. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалоста..........Заранеє спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.01.2014, 16:04
Ответы с готовыми решениями:

Вывести все возможные трехзначные числа, полученные путем перестановки цифр трехзначного числа
Ребята, хелп!!! Выведите на экран все возможные трехзначные числа, полученные путем перестановки цифр трехзначного числа, вводимого с...

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

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

3
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
03.01.2014, 20:21
вариант:
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
#include <iostream>
using namespace std;
int a[10], b[50], c;
void rec(int t)
{
    int i;
    if(t==c)
    {
        for(i=0; i<c; i++)
            cout<<b[i];
        cout<<endl;
        return;
    }
    for(i=0; i<10; i++)
        if(a[i])
        {
            a[i]--;
            b[t]=i;
            rec(t+1);
            a[i]++;
        }
}
 
int main()
{
    int n;
    cin>>n;
    while(n)
    {
        a[n%10]++;
        n/=10;
        c++;
    }
    rec(0);
    return 0;
}
2
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
03.01.2014, 21:54
http://lmgtfy.com/?q=%D0%B3%D0... 0%BE%D0%BA
0
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9
03.01.2014, 21:59  [ТС]
valeriikozlov, Спасибо єсли інтересно я нашол такой код:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<conio.h>
using namespace std;
int NumberOfElements();
int* packArray(int);
bool isContain(int* array, int , int );
void nextElement(int* , int , int& );
int firstElement(int* , int );
void CombinationOfElemens(int* array, int ,int );
void main()
{
    int n = NumberOfElements(),
      * m = packArray(n);
 
    cout<<"Vsi kombinacii elementiv:\n";
    CombinationOfElemens(m, n, 0);
 _getch();
    free(m);
}
int NumberOfElements()
{
    int ret;
    do
    {
        cout<< "Vvedite kilkist elementiv v masuvi: ";
        cin>>ret;
    }
    while(ret <= 0);
    return ret;
}
int* packArray(int elements)
{
    int* ret = (int*) malloc(elements * sizeof(int));
     cout<<"Vvedit elementu massuvy: ";
     for(int i = elements; i; --i)
    {
       
        scanf_s("%d", ret + elements - i);
    }
    return ret;
}
 
bool isContain(int* array, int countOfElements, int requiredElement)
 
{
    for(int i = 0; i < countOfElements; ++i)
        if(array[i] == requiredElement)
            return true;
    return false;
}
void nextElement(int* usedElements, int countOfUsedElements, int& currentElement)
 
{
    while(isContain(usedElements, countOfUsedElements, ++currentElement)) {   }
}
int firstElement(int* usedElements, int countOfUsedElements)
 
{
    int currentElement = 0;
    while(isContain(usedElements, countOfUsedElements, currentElement))
        ++currentElement;
 
    return currentElement;  
}
void CombinationOfElemens(int* array, int elements, int countOfUsedElements = 0)
{
    
    static int* usedElements = (int*) malloc(elements * sizeof(int));
    if(countOfUsedElements != elements)
        for(int i = firstElement(usedElements, countOfUsedElements); i < elements; nextElement(usedElements, countOfUsedElements, i))
        {
            usedElements[countOfUsedElements] = i;
            CombinationOfElemens(array, elements, countOfUsedElements + 1);
        }
    else
    {
        for(int i = 0; i < elements; ++i)
          cout<<"\t"<< array[usedElements[i]];
        cout<<endl;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.01.2014, 21:59
Помогаю со студенческими работами здесь

Ввести с клавиатуры четырехзначное число и подсчитать, сколько среди цифр этого числа заданных цифр
1. Ввести с клавиатуры четырехзначное число и подсчитать, сколько среди цифр этого числа заданных цифр. 2. Ввести с клавиатуры...

Ввести число и найти сумму цифр этого числа
Ввести число и найти сумму цифр этого числа (Только в QBasic)

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

Ввести цифру А, вывести все возможные числа, состоящие из цифр, не превышающих или равных A
Ввести цифру А, вывести все возможные числа, состоящие из цифр, не превышающих или равных A. Количество цифр в числах должно быть равно А. ...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru