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

Рекурсия: размещения из 10 по 3 элемента - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заменить все прописные буквы на строчные http://www.cyberforum.ru/cpp-beginners/thread145472.html
Подредактируйте код, нужно поменять все прописные буквы на строчные буквы. Только вот программа не запускается. Код: #include <stdio.h> #include <ctype.h> int main(void){ char str = "AbCdEfGh", *p;
C++ исходник win calc Здрасти. Не знаю в какой раздел написать лучше, написал в самый лучший. А ктони-будь знает где можно посмотреть исходный код калькулятора windows компании microsoft? http://www.cyberforum.ru/cpp-beginners/thread145469.html
C++ Описать рекурсивную функцию, вычисляющую значение двойного факториала
Описать рекурсивную функцию Fact2(N) вещественного типа,вычисляющую значение двойного факториала N!! = N*(N-2)*(N-4)*... (N>0 - параметр целого типа;последний сомножитель в произведении равен 2,если N - четное число, и 1, если N- нечетное ).С помощью этой функции вычислить двойные факториалы пяти случайных чисел. Ребят очень прошу, помогите,просто у меня в колледже бред с...
C++ ортогональность
кто нибудь может привести пример ортогональности на си
C++ Ввод с клавиатуры данных в массив http://www.cyberforum.ru/cpp-beginners/thread145452.html
Написать программу выполняющую след. действия: -ввод с клавиатуры данных в массив состоящий из 10-ти структур типа Worker( с полями:1)ФИО 2)Должность 3)Год поступления на работу), причем записи должны быть размещены по алфавиту. Вывод на дисплей фамилий работников,чей стаж работы в организации превышает значение введенное с клавиатуры. Если таких работников нет, то вывести на экран...
C++ Длинная арифметика Всем доброго вечера. Нужна помощь в решении задачи. Составить программу для вычисления числа: 2^64-1. В результате сохранить все цифры. 2^64 - это 2 в 64-ой степени. Я так понимаю, решается через одномерный массив. Блин, а как? подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
3011 / 1667 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
15.06.2010, 06:39     Рекурсия: размещения из 10 по 3 элемента
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. 
//Размещением называется выборка из п указанных элементов т неповторяющихся элементов. 
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
 
 
typedef std::string         T_str;
typedef int                 T_num;
typedef std::vector<T_num>  T_nums;
 
class T_generate_podrjad_from
{
    T_num  first_num_;
public:
    T_generate_podrjad_from(T_num  first_num) : first_num_(first_num)
    {}
 
    T_num operator()()
    {
        return first_num_++;
    }
};
 
T_nums  get_n_nums_podrjad_from(T_num  nums_size, T_num  begin_num)
{
    T_nums  nums(nums_size);
    std::generate(nums.begin(), nums.end(), T_generate_podrjad_from(begin_num));
    return  nums;
}
 
void print_nums(const T_nums&  nums)
{    
    std::copy(nums.begin(), nums.end(), std::ostream_iterator<T_num>(std::cout, " "));
    std::cout << "   ";  
}
 
typedef std::set<T_num> T_nums_set;
 
void  print_all_razmetch
    (
        const T_nums&  nums_nabor, 
        const T_num    last_razmetsh_ind,
        T_nums&        razmetsh
    )
{    
    for(T_nums::const_iterator  nabor_num_it = nums_nabor.begin();
        nabor_num_it != nums_nabor.end(); ++nabor_num_it)    
    { 
        if(last_razmetsh_ind > 0)
        {
            T_nums_set  razmetsh_nums_set
                (razmetsh.begin(), razmetsh.begin() + last_razmetsh_ind);
            if(razmetsh_nums_set.count(*nabor_num_it) > 0)
            {
                continue;
            }        
        }        
        
        razmetsh[last_razmetsh_ind] = *nabor_num_it;
        if(last_razmetsh_ind == razmetsh.size() - 1)
        {
            print_nums(razmetsh);
        }
        else
        {
            print_all_razmetch
                (
                    nums_nabor, 
                    last_razmetsh_ind + 1, 
                    razmetsh
                );            
        }             
    }//for(T_nums::const_iterator  nabor_num_it = nums_nabor.begin();
}
 
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << std::endl
                  << std::endl;
        T_num n;
        std::cout << "Введите размер исходного множества: ";
        std::cin >> n;
        if(n < 1) return EXIT_FAILURE;
        
        std::cout << "Введите значение первого элемента исходного множества: ";
        T_num  num_begin;
        std::cin >> num_begin;
        
        T_num  m;
        do
        {
            std::cout << "Введите размер размещения: ";
            std::cin >> m;        
        }while(m < 1 || n < m);
        //Генерируем начальный вектор.
        T_nums  nums_nabor = get_n_nums_podrjad_from(n, num_begin);
        T_nums  razmetsh(m);
        print_all_razmetch(nums_nabor, 0, razmetsh);    
    }   
    return 0;
}
 
Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru