Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128

Перечисление чисел

03.04.2015, 18:23. Показов 7371. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я не являюсь программистом, но в моём деле мне необходима помощь компьютера. И ради этого я начал изучать программирование. Я установил Visual Studio и нашёл несколько статей для новичков в С++. Пока я их изучаю, я хочу написать свою задачу вам, чтобы, мало ли, мир не без добрых людей, поможете мне.:

Есть 3 ячейки: a b c
Есть количество чисел от 1 до 5, для каждой ячейки.
Надо произвести расчёт чисел в автоматическом режиме от меньшего к большему, начиная с ячейки с.
Запись чисел должна будет идти в текстовый документ, откуда все вычисления можно будет скопировать.
После достижения комбинации 1 1 5 она должна быть записана, а далее необходимо, чтобы число ячейки с, сбросилось до 1. А число в ячейке b сменилось на 2. И так далее до комбинации 5 5 5.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2015, 18:23
Ответы с готовыми решениями:

Перечисление в BC++
В русском языке как, правило после букв Ж, Ч, Ш, Щ, пишется И, А, У, а не Ы, Я, Ю, (за исключением слов ЖЮРИ, БРОШЮРА, ПАРАШЮТ). Проверить...

перечисление месяцев
написать консольную программу на С++, которая использует перечисление для идентификации месяцев года значениями номеров месяца от 1 до 12....

Не работает перечисление
Сам код: #include <iostream> #include <string> using namespace std; #include <windows.h> #include <process.h> enum typ...

59
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.04.2015, 11:11
Студворк — интернет-сервис помощи студентам
yellyex, Как я понял, вам нужны все перестановки из N элементов? На форуме встречалось неоднократно. "генерация перестановок"
Или все-таки сочетания из N по K ? Тогда "Генерация сочетаний"
В первоначальной же формулировке (Генерация всех k-разрядных чисел в n-ричной системе счисления) можно обойтись одним циклом и без рекурсии для любого n. Для этого просто надо вспомнить, как нас во втором классе учили столбиком складывать. Достаточно из всей премудрости этого процесса уметь единичку прибавлять
0
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 14:04  [ТС]
Всем привет! Я тут подумал и решил предложить вот что. А что, если сделать список комбинаций не в текстовый файл, а в приложение. То есть весь код перенести в C#. Все комбинации будут записываться в окно, из которого потом можно будет всё это скопировать.

Цитата Сообщение от Somebody Посмотреть сообщение
Или лучше изначально писать то, что надо.
Это правда удобнее. Тогда я сразу напишу идеал того, что мне нужно, без упрощённый версий, как в посте №1. И я хотел бы просить некой помощи в просветлении, как программировать. То есть я не против, если форумчане за меня код напишут, но мне уже от этого стыдно и я хочу сделать что-то сам, помимо своих целей.

1. Это семь ячеек.
2. Каждая ячейка содержит число от 2 до 14 включительно.
3. Для каждого числа есть дополнительное вспомогательное число, стоящее справа от него от 1 до 4.
4. Пример: 2а 3b 4c 5d 6a 7b 8c. 21 32 43 54 61 72 83
5. Принцип расчёта комбинации такой: вспомогательное число последнего числа в семизначной комбинации увеличивается от меньшего к большему. То есть от 1 до 4 включительно. После достижения 4, основное число сменяется на +1 выше. То есть, если было 3, то стало 4. И снова по кругу и до конца. То есть, всё то что уже было ранее, только с учётом вспомогательных чисел. И так как я являюсь полным новичком в программировании, посоветуйте мне пожалуйста литературу, которую стоит почитать, и которая поможет мне в моих целях. Спасибо.

Это была основа. Теперь дальше:

1. Нужно сгенерировать все комбинации, учитывая все комбинации из вспомогательных чисел, по порядку от 2 до 14. Пример (без вспм. чисел): 2 3 4 5 6 7 8 9 10 11 12 13 14.

2. Нужно сгенерировать все комбинации, учитывая все комбинации из вспомогательных чисел, по порядку в количестве до 4 от 2 до 5, от 3 до 6, от 4 до 7 и заканчивая от 10 до 14. Пример (без вспм. чисел): 2 3 4 5 8 9 10. 4 5 6 7 2 9 14.

3. Нужно сгенерировать все комбинации, учитывая все комбинации из вспомогательных чисел, содержащие 4 одинаковые числа. Пример (без вспм. чисел): 5 5 5 5 4 4 4. 7 7 7 7 9 2 3.

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

5. Нужно сгенерировать все комбинации, учитывая все комбинации из вспомогательных чисел, содержащие 3 и 2 одинаковых чисел. Пример (без вспм. чисел): 3 3 3 2 2 4 4. 5 5 5 4 4 8 9. 8 8 8 4 2 5 5.

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

7. Нужно сгенерировать все комбинации, учитывая все комбинации из вспомогательных чисел, не содержащие любые совпадения чисел,а также совпадения по порядку, как в пункте 1 и 2. Пример (без вспм. чисел): 2 3 12 10 7 14 9. 3 9 8 7 2 6 4.

Я понимаю, что одна генерация комбинаций может содержать и другие, поменьше, комбинации, но я для того и расфасовал всё по пунктам, чтобы генерировать отдельно, чтобы не запутаться потом.

Добавлено через 5 минут
Байт, Спасибо. Я обязательно поищу!
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
04.04.2015, 14:05
Цитата Сообщение от yellyex Посмотреть сообщение
А что, если сделать список комбинаций не в текстовый файл, а в приложение. То есть весь код перенести в C#. Все комбинации будут записываться в окно, из которого потом можно будет всё это скопировать.
Многие распространённые текстовые редакторы не могут схавать гиг данных, а тут в окно... Может, тогда уж на принтере распечатать?
Вообще, думаю, надо не сто раз генерировать всякие комбинации с разными условиями, а генерировать 1 раз и для каждой комбинации определять, в какую категорию она попадает.
И, похоже, это карты от 2 до туза, 4 масти - применение немного проясняется. Но надо ли на самом деле генерировать все комбинации? Может быть, можно математически тот результат, который нужен?
2
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 14:13  [ТС]
Somebody,
Цитата Сообщение от Somebody Посмотреть сообщение
И, похоже, это карты от 2 до туза, 4 масти - применение немного проясняется. Но надо ли на самом деле генерировать все комбинации? Может быть, можно математически тот результат, который нужен?
Не совсем, но я тоже об этом думал в последнее время. Это нужно для расчёта другой игры. А так да, очень похоже. Может быть что-то и с картами придумаю Но в любом случае, я уже описал конечные цели выше. Если я это получу, то стану властелином мира!!!

Добавлено через 6 минут
Цитата Сообщение от Somebody Посмотреть сообщение
Может быть, можно математически тот результат, который нужен?
Да, я ещё года два назад хотел узнать, как работает определение - чья комбинация в покере старше. На этом форуме уже было это? Если да, то поищу.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
04.04.2015, 14:18
Цитата Сообщение от yellyex Посмотреть сообщение
Да, я ещё года два назад хотел узнать, как работает определение - чья комбинация в покере старше. На этом форуме уже было это?
На форуме не видел. Но тут вроде ничего сложного. Думаю, это тупо последовательность проверок на каждую из комбинаций.
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 14:21  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
Думаю, это тупо последовательность проверок на каждую из комбинаций.
Каждую раздачу делать проверку? Там я посмотрел примерно 2500000 комбинаций из 5 карт. Довольно долго получится. Но мне нужно не это Хотя на самом деле, тут чисел 5, а у меня 7. Может быть, если тут кто-то знает, как этот расчёт производить хотя бы из 5 чисел, то я позже смогу увеличить это число до 7. Было бы неплохо узнать, как работает эта система. Я заинтригован. Она, получается схожа с моей. Но у меня вместо карт юниты
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
04.04.2015, 14:26
Я имею в виду комбинации не в комбинаторном смысле, а в покерном, коих довольно мало.
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 21:21  [ТС]
Так значит. Покопавшись в последнем коде, я ничего толком не понял. Разве что научился изменять переменные в ней. А вот добавить что-то или изменить, увы нет.

Воспользовавшись более простым кодом от rikimaru2013, я быстро сообразил, что нужно сделать.

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
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << " " << endl;
    }
 
    return 0;
}
Теперь у меня есть все комбинации так, как я хотел их сделать. Но теперь возникла новая трудность. Я не разбираюсь в условиях. Конечно я сейчас почитаю про них, но может бы кто-нибудь из многоуважаемых юзеров этого форума сможет откликнуться быстрее, чем я найду решение. Так вот. Теперь я хочу добавить условие, которое позволит записывать не абсолютно все комбинации, которые делает код выше, а только:

1. А1 А1 А1 А1 A1 - E3 E3 E3 E3 E3 (Тут только 5 чисел вместе, поэтому комбинаций всего 5)
2. A1 A1 A1 A1 B1 - E3 E3 E3 E3 D3 (Тут только 4 чисел вместе и 1 число отдельно)
3. A1 A1 A1 B1 B1 - E3 E3 E3 D3 D3 (Тут 3 и 2 вместе)
4. A1 A1 A1 B1 С1 - E3 E3 E3 D3 B3 (Тут просто 3 числа вместе)
5. A1 A1 B1 B1 С1 - E3 E3 D3 D3 C3 (Тут 2 и 2 числа вместе)
6. A1 A1 B1 C1 D1 - E3 E3 D3 C3 B3 (Тут просто 2 числа вместе)
7. A1 B1 C1 D1 E1 - E3 D3 C3 B3 A3 (Тут все числа по порядку)

Добавлено через 11 минут
Как тут личные сообщения отправлять?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.04.2015, 21:39
Цитата Сообщение от yellyex Посмотреть сообщение
Как тут личные сообщения отправлять?
Около ника(слева) есть ма-а-а-ленькая стрелочка. По нажатию на нее выскочит меню. Там есть пункт. Но пользователь в настройках профиля может заблокировать прием сообщений. И, кажется, до достижения какого-то количества сообщений, принимать-получать личку не разрешается. Я вот у вас такого пункта не обнаружил. (подробности - в правилах). В любом случае, вопрос можно решить с помощью модератора.
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 21:43  [ТС]
Байт, спасибо! Но в данный момент я увлёкся экспериментами с условиями. Посмотрим, что будет
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.04.2015, 22:18
Цитата Сообщение от Байт Посмотреть сообщение
Около ника(слева)
Прошу прощения. СПРАВА, конечно. Путаюсь я. Это наследственное. Сказывается ближне-восточное происхождение. Сено-Солома.
0
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
04.04.2015, 23:25  [ТС]
План:

1. А1 А1 А1 А1 A1 - E3 E3 E3 E3 E3 (5 чисел вместе)
2. A1 A1 A1 A1 B1 - E3 E3 E3 E3 D3 (4 числа вместе)
3. A1 A1 A1 B1 B1 - E3 E3 E3 D3 D3 (3 и 2 числа вместе)
4. A1 A1 A1 B1 С1 - E3 E3 E3 D3 B3 (3 числа вместе)
5. A1 A1 B1 B1 С1 - E3 E3 D3 D3 C3 (2 и 2 числа вместе)
6. A1 A1 B1 C1 D1 - E3 E3 D3 C3 B3 (2 числа вместе)
7. A1 B1 C1 D1 E1 - E3 D3 C3 B3 A3 (Все числа по порядку)

Пункт №1 выполнен. Посмотрите пожалуйста кому не трудно. Есть ли тут ошибки, или может быть предложения по оптимизации?

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 <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
 
    if ((a1 == a3) && (a1 == a5) && (a1 == a7) && (a1 == a9))
 
 
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << endl;
    }
 
    return 0;
}
Добавлено через 1 минуту
Пункт №2 выполнен. Но у меня в результате есть небольшие погрешности: самая первая и последняя комбинации состоят из пяти основных чисел 11111 и 55555, когда в остальных, как и задумывалось, по четыре числа в любой комбинации.

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
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
 
    if ((a1 == a3) && (a1 == a5) && (a1 == a7) ||
        (a1 == a3) && (a1 == a5) && (a1 == a9) ||
        (a1 == a5) && (a1 == a7) && (a1 == a9) ||
        (a3 == a5) && (a3 == a7) && (a3 == a9))
 
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << endl;
    }
 
    return 0;
}
Добавлено через 22 минуты
Пункт №3 выполнен. Недоработка такая же, как и в пункте 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
34
35
36
37
38
39
40
41
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
 
    if ((a1 == a3) && (a1 == a5) && (a7 == a9) ||
        (a1 == a3) && (a1 == a7) && (a5 == a9) ||
        (a1 == a3) && (a1 == a9) && (a5 == a7) ||
        (a1 == a5) && (a1 == a7) && (a3 == a9) ||
        (a1 == a5) && (a1 == a9) && (a3 == a7) ||
        (a1 == a7) && (a1 == a9) && (a3 == a5) ||
        (a3 == a5) && (a3 == a7) && (a1 == a9) ||
        (a3 == a5) && (a3 == a9) && (a1 == a7) ||
        (a3 == a7) && (a3 == a9) && (a1 == a5) ||
        (a5 == a7) && (a5 == a9) && (a1 == a3))
 
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << endl;
    }
 
    return 0;
}
Добавлено через 3 минуты
Пункт 4 не выполнен.

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
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
 
    if ((a1 == a3) && (a1 == a5) ||
        (a1 == a3) && (a1 == a7) ||
        (a1 == a3) && (a1 == a9) ||
        (a1 == a5) && (a1 == a7) ||
        (a1 == a5) && (a1 == a9) ||
        (a1 == a7) && (a1 == a9) ||
        (a3 == a5) && (a3 == a7) ||
        (a3 == a5) && (a3 == a9) ||
        (a3 == a7) && (a3 == a9) ||
        (a5 == a7) && (a5 == a9))
 
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << endl;
    }
 
    return 0;
}
Добавлено через 5 минут
Пункт 4 не выполнен! Так как там есть множество ненужных комбинаций их 4 одинаковых чисел и так далее. Буду думать дальше...
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.04.2015, 23:26
yellyex, Поздравляю!
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
05.04.2015, 00:15  [ТС]
Подскажите пожалуйста, какие условия надо поставить в пункт 4, чтобы в текстовый документ записывались только комбинации с тремя одинаковыми числами. Пример: 33345. 24232. 45155. Спасибо.

Добавлено через 10 минут
Разработал вот такое условие. Сейчас увеличу и посмотрю на результат.
C++
1
if ((a1 = a3) && (a1 = a5) && (a7 != a1) && (a7 != a3) && (a7 != a5) && (a9 != a1) && (a9 != a3) && (a9 != a5))
Добавлено через 21 минуту
По пункту 4. Вот такой код. И на этот раз без ошибок.
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
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 
using namespace std;
 
int main()
 
{
 
    ofstream stream("text.txt");
 
    for (int a1 = 1; a1 <= 5; ++a1)
    for (int a2 = 1; a2 <= 4; ++a2)
    for (int a3 = 1; a3 <= 5; ++a3)
    for (int a4 = 1; a4 <= 4; ++a4)
    for (int a5 = 1; a5 <= 5; ++a5)
    for (int a6 = 1; a6 <= 4; ++a6)
    for (int a7 = 1; a7 <= 5; ++a7)
    for (int a8 = 1; a8 <= 4; ++a8)
    for (int a9 = 1; a9 <= 5; ++a9)
    for (int a10 = 1; a10 <= 4; ++a10)
 
 
    if ((a1 == a3) && (a1 == a5) && (a7 != a1) && (a7 != a3) && (a7 != a5) && (a9 != a1) && (a9 != a3) && (a9 != a5) ||
        (a1 == a3) && (a1 == a7) && (a5 != a1) && (a5 != a3) && (a5 != a7) && (a9 != a1) && (a9 != a3) && (a9 != a7) ||
        (a1 == a3) && (a1 == a9) && (a5 != a1) && (a5 != a3) && (a5 != a9) && (a7 != a1) && (a7 != a3) && (a7 != a9) ||
        (a1 == a5) && (a1 == a7) && (a3 != a1) && (a3 != a5) && (a3 != a7) && (a9 != a1) && (a9 != a5) && (a9 != a7) ||
        (a1 == a5) && (a1 == a9) && (a3 != a1) && (a3 != a5) && (a3 != a9) && (a7 != a1) && (a7 != a5) && (a7 != a9) ||
        (a1 == a7) && (a1 == a9) && (a3 != a1) && (a3 != a7) && (a3 != a9) && (a5 != a1) && (a5 != a7) && (a5 != a9) ||
        (a3 == a5) && (a3 == a7) && (a1 != a3) && (a1 != a5) && (a1 != a7) && (a9 != a3) && (a9 != a5) && (a9 != a7) ||
        (a3 == a5) && (a3 == a9) && (a1 != a3) && (a1 != a5) && (a1 != a9) && (a7 != a3) && (a7 != a5) && (a7 != a9) ||
        (a3 == a7) && (a3 == a9) && (a1 != a3) && (a1 != a7) && (a1 != a9) && (a5 != a3) && (a5 != a7) && (a5 != a9) ||
        (a5 == a7) && (a5 == a9) && (a1 != a5) && (a1 != a7) && (a1 != a9) && (a3 != a5) && (a3 != a7) && (a3 != a9)
        )
 
    {
 
        stream << a1 << a2 << " " << a3 << a4 << " " << a5 << a6 << " " << a7 << a8 << " " << a9 << a10 << endl;
    }
 
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.04.2015, 00:16
Цитата Сообщение от yellyex Посмотреть сообщение
Разработал вот такое условие.
Обилие a1, a2.. a14 наводит на мысль, что эффективнее представить эти "a" в виде массива. НО, как вы сами заметили,
Цитата Сообщение от yellyex Посмотреть сообщение
Я не являюсь программистом,
Я вовсе не хочу портить вам настроение. Играйте в ваши игры! Но все ваши построения можно записать значительно короче. И если интерес именно к программированию после решения вашей задачи (надеюсь, успешного!) не пропадет, вы просто будете удивлены, насколько все ваши мысли могут быть элегантнее реализованы.
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
05.04.2015, 00:19  [ТС]
Байт, спасибо Но товарищ Renji, сделал намного проще, что я сам ничего не понял, но зато я сильно восхитился, как бывает просто сделать нечто огромное малым! Не переживайте, мой интерес к программированию не пропадёт.

Если Вы можете представить мой код короче. то милости прошу это сделать
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
05.04.2015, 00:22
А в прочем... Попался в желтой прессе такой анекдот. Папа - программист. Вбегает сыночек. "Папа, а почему солнце садится на западе?" - "Ты это точно знаешь?" - "Ну да. И вчера, и позавчера, да и три дня намедни...". Папа берет сына за подбородок, внимательно смотрит ему в глаза. - "Слушай, пожалуйста ничего не трогай".
3
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
05.04.2015, 18:39
Без разделения на основные/вспомогательные. Их всегда можно вытащить как частное/остаток от деления.
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
#include <array>
#include <fstream>
#include <iterator>
#include <string>
 
using namespace std;
 
const unsigned maxNumber1 = 5;
const unsigned maxNumber2 = 3;
const unsigned maxNumber = maxNumber1 * maxNumber2;
const unsigned combLength = 5;
const unsigned nFiles = 7;
 
int main()
{
    // файлы для записи комбинаций
    ofstream files[nFiles];
    for (unsigned i = 0; i < nFiles; i++)
        files[i].open(to_string(i) + ".txt", ios::out | ios::trunc);
 
    array<unsigned, combLength> combination {};
    while (true)
    {
        // считаем, скольно раз встречается каждое число
        unsigned numberCounts[maxNumber1] {};
        for (unsigned c : combination)
            numberCounts[c / maxNumber2]++;
 
        // считаем, сколько раз встречается... как бы это сказать...
        unsigned numberCountCounts[combLength + 1] {};
        for (unsigned n : numberCounts)
            numberCountCounts[n]++;
 
        // определяем, какого типа получилась комбинация
        unsigned combType = 6;
        auto& ncc = numberCountCounts;
        if (ncc[5] != 0)
            combType = 0;
        else if (ncc[4] != 0)
            combType = 1;
        else if (ncc[3] != 0)
            combType = ncc[2] != 0 ? 2 : 3;
        else if (ncc[2] != 0)
            combType = ncc[2] > 1 ? 4 : 5;
        // пишем в соответствующий файл
        for (unsigned n : combination)
            files[combType] << "ABCDE"[n / maxNumber2] << "123"[n % maxNumber2] << ' ';
        files[combType] << '\n';
 
        // переходим к следующей комбинации
        // (увеличение числа в системе по основанию maxNumber)
        auto i = combination.rbegin();
        while (i != combination.rend() && *i == maxNumber - 1)
            *i++ = 0;
        if (i == combination.rend())
            break;
        ++*i;
    }
}
(Сначала было без array, но мой gcc не хавает std::rbegin, std::rend.)
1
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
06.04.2015, 07:24  [ТС]
Somebody, спасибо тебе большое! Только пока код не смогу проверить. У меня тут другие дела нарисовались Надо делать...
0
1 / 1 / 0
Регистрация: 03.04.2015
Сообщений: 128
11.04.2015, 03:23  [ТС]
Somebody, я посмотрел код. Ты просто красавчик!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2015, 03:23

Перечисление переменных
int startPos = 0, endPos; Вот так записать можно? У меня вроде работает, а если с точки зрения классического &quot;правописания&quot;?

Перечисление Com портов
В общем есть такая задачка, есть девайс, который передают данные по блютузу....в комп через USB воткнут приемник, который работает с компом...

Перечисление в структуре
Здравствуйте! Я создала перечисление в структуре struct DCBSettings { enum ...

Перечисление enum
Здравствуйте. Хотелось бы узнать, возможно ли &quot;пройтись&quot; по всем значениям перечисления, увеличивая переменную этого перечисления? Вот...

Enum Перечисление
Есть номиналы монет, которые занесены в 2 перечисления (enum): рубли и монеты. Набрать определенную сумму минимальным количеством монет. ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru