Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397

получить все комбинации по парам x y, чтобы получились следующие массивы

25.11.2016, 20:05. Показов 1152. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с алгоритмической задачей, с первого взгляда казалось простой, но никак не могу решить как закодить. Есть массив значений:
1)Dx
2)Dy
3)Fx
4)Fy
5)Nx
6)Ny

Исходя из него нужно получить все комбинации по парам x y, чтобы получились следующие массивы:
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny

Гуру выручайте, а то уже мозг из ушей течет

Добавлено через 2 минуты
Еще количество заглавных(D,F,N) и строчных(x,y) не фиксировано.

Добавлено через 5 минут
, то есть здесь описан частный случай, может быть например D,F,N,J и x,y,g или любая другая комбинация.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2016, 20:05
Ответы с готовыми решениями:

Получить все возможные комбинации
Дана строка, например: АРТО Необходимо получить все возможные комбинации из совпадений букв русского и английского алфавитов, не...

Получить все возможные комбинации чисел
Доброго дня! Подскажите, как реализовать макрос? есть такие числа: "1" - 46 раз "2" - 64 раза "3" - 12 раз ...

Получить все возможные комбинации чисел
есть числа подскажите, пожалуйста, как при помощи средств delphi можно получить все их возможные комбинации

15
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
25.11.2016, 20:25
Было уже что-то подобное несколько раз, поищите по разделу
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
25.11.2016, 22:36  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Было уже что-то подобное несколько раз, поищите по разделу
Если бы было, я не создал бы новую тему.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
25.11.2016, 23:56
на разборку
Visual Basic
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
Dim n%
Dim a()
 
Private Sub Command1_Click()
 
a = Array("", "F", "D", "N", "x", "y")
n = UBound(a)
List1.Clear
per (0)
 
End Sub
Sub per(t)
If t = n Then
 k = k + 1
    f = True
    For i = 1 To 2 * (n \ 2) Step 2
       If a(i) Like "[a-z]" Or a(i + 1) Like "[A-Z]" Then
          f = False: Exit For
       End If
    Next i
 
If f = True Then
st = ""
    For i = 1 To n
        st = st + a(i)
    Next i
     List1.AddItem st
 End If
Else
    For i = t + 1 To n
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
         Call per(t + 1)
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
    Next i
End If
End Sub
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.11.2016, 10:40
Алгоритм генерации массива
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub www()
    Dim i As Long, j As Long, k As Long, arr1, arr2, n As Long, m As Long
    arr1 = Array("D", "N", "F", "J")
    arr2 = Array("x", "y", "g")
    n = UBound(arr1) + 1
    m = UBound(arr2) + 1
    For i = 0 To m ^ n - 1
        Debug.Print i + 1,
        k = i
        For j = 0 To n - 1
            Debug.Print arr1(j) & arr2(k Mod m),
            k = k \ m
        Next j
        Debug.Print
    Next i
End Sub
1
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
26.11.2016, 15:03  [ТС]
Цитата Сообщение от gaw Посмотреть сообщение
на разборку
Dx,Dy ... - нераздельны, считайте их string.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
26.11.2016, 15:11
Visual Basic
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
Dim n%
Dim a()
 
Private Sub Command1_Click()
 
a = Array("", "Fx", "Dy", "Nz", "Gj")
n = UBound(a)
List1.Clear
per 0, 0
 
End Sub
Sub per(t, k)
If t = n Then
st = "": k = k + 1
    For i = 1 To n
        st = st + a(i) & vbTab
    Next i
    
     List1.AddItem k & vbTab & st
 End If
 
   For i = t + 1 To n
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
         Call per(t + 1, k)
      tm = a(t + 1): a(t + 1) = a(i): a(i) = tm
    Next i
 
End Sub
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
26.11.2016, 15:20  [ТС]
gaw, это перебор всего со всем, посмотрите внимательнее в задачу, Dy и Dx не могут быть в одном массиве, как и Fx и Fy и т. п. поэтому у меня и получается 8 результатов, а не 24 как у вас.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
26.11.2016, 15:23
Цитата Сообщение от CRIDEL Посмотреть сообщение
Есть массив значений:
1)Dx
2)Dy
3)Fx
4)Fy
5)Nx
6)Ny
и теперь
Цитата Сообщение от CRIDEL Посмотреть сообщение
Dy и Dx не могут быть в одном массиве, как и Fx и Fy
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
26.11.2016, 15:26  [ТС]
Мозг легко решает эту задачу, а как заставить копьютер

Добавлено через 39 секунд
gaw,

Цитата Сообщение от CRIDEL Посмотреть сообщение
Исходя из него нужно получить все комбинации по парам x y, чтобы получились следующие массивы:
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.11.2016, 16:37
Цитата Сообщение от CRIDEL Посмотреть сообщение
Мозг легко решает эту задачу, а как заставить копьютер
код из 5го сообщения не подходит?
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
26.11.2016, 17:45  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
код из 5го сообщения не подходит?
нет, даже близко не то, gaw, понял идею, тут нужна какого-то рода рекурсия рекурсии, но не дается что-то никак
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.11.2016, 17:50
Цитата Сообщение от CRIDEL Посмотреть сообщение
может быть например D,F,N,J и x,y,g
Сколько должно быть вариантов для указанных исходных данных?
У меня получилось - 81 вариант:
Кликните здесь для просмотра всего текста
1 Dx Nx Fx Jx
2 Dy Nx Fx Jx
3 Dg Nx Fx Jx
4 Dx Ny Fx Jx
5 Dy Ny Fx Jx
6 Dg Ny Fx Jx
7 Dx Ng Fx Jx
8 Dy Ng Fx Jx
9 Dg Ng Fx Jx
10 Dx Nx Fy Jx
11 Dy Nx Fy Jx
12 Dg Nx Fy Jx
13 Dx Ny Fy Jx
14 Dy Ny Fy Jx
15 Dg Ny Fy Jx
16 Dx Ng Fy Jx
17 Dy Ng Fy Jx
18 Dg Ng Fy Jx
19 Dx Nx Fg Jx
20 Dy Nx Fg Jx
21 Dg Nx Fg Jx
22 Dx Ny Fg Jx
23 Dy Ny Fg Jx
24 Dg Ny Fg Jx
25 Dx Ng Fg Jx
26 Dy Ng Fg Jx
27 Dg Ng Fg Jx
28 Dx Nx Fx Jy
29 Dy Nx Fx Jy
30 Dg Nx Fx Jy
31 Dx Ny Fx Jy
32 Dy Ny Fx Jy
33 Dg Ny Fx Jy
34 Dx Ng Fx Jy
35 Dy Ng Fx Jy
36 Dg Ng Fx Jy
37 Dx Nx Fy Jy
38 Dy Nx Fy Jy
39 Dg Nx Fy Jy
40 Dx Ny Fy Jy
41 Dy Ny Fy Jy
42 Dg Ny Fy Jy
43 Dx Ng Fy Jy
44 Dy Ng Fy Jy
45 Dg Ng Fy Jy
46 Dx Nx Fg Jy
47 Dy Nx Fg Jy
48 Dg Nx Fg Jy
49 Dx Ny Fg Jy
50 Dy Ny Fg Jy
51 Dg Ny Fg Jy
52 Dx Ng Fg Jy
53 Dy Ng Fg Jy
54 Dg Ng Fg Jy
55 Dx Nx Fx Jg
56 Dy Nx Fx Jg
57 Dg Nx Fx Jg
58 Dx Ny Fx Jg
59 Dy Ny Fx Jg
60 Dg Ny Fx Jg
61 Dx Ng Fx Jg
62 Dy Ng Fx Jg
63 Dg Ng Fx Jg
64 Dx Nx Fy Jg
65 Dy Nx Fy Jg
66 Dg Nx Fy Jg
67 Dx Ny Fy Jg
68 Dy Ny Fy Jg
69 Dg Ny Fy Jg
70 Dx Ng Fy Jg
71 Dy Ng Fy Jg
72 Dg Ng Fy Jg
73 Dx Nx Fg Jg
74 Dy Nx Fg Jg
75 Dg Nx Fg Jg
76 Dx Ny Fg Jg
77 Dy Ny Fg Jg
78 Dg Ny Fg Jg
79 Dx Ng Fg Jg
80 Dy Ng Fg Jg
81 Dg Ng Fg Jg

Если не правильно, то объясните задачу.
0
70 / 62 / 19
Регистрация: 03.05.2013
Сообщений: 397
26.11.2016, 18:06  [ТС]
Цитата Сообщение от m-ch Посмотреть сообщение
Если не правильно, то объясните задачу.
должно получиться восемь массивов по три элемента(по числу пар x,y) как в заглавии:
Цитата Сообщение от CRIDEL Посмотреть сообщение
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fy, 3)Nx
4 - 1)Dx, 2)Fy, 3)Ny
5 - 1)Dy, 2)Fx, 3)Nx
6 - 1)Dy, 2)Fx, 3)Ny
7 - 1)Dy, 2)Fy, 3)Nx
8 - 1)Dy, 2)Fy, 3)Ny

то есть на каждый D приходится два F и два N, но может приходится больше если будет, например Nx Ny Nz
тогда получится 12 массивов
1 - 1)Dx, 2)Fx, 3)Nx
2 - 1)Dx, 2)Fx, 3)Ny
3 - 1)Dx, 2)Fx, 3)Nz
4 - 1)Dx, 2)Fy, 3)Nx
5 - 1)Dx, 2)Fy, 3)Ny
6 - 1)Dx, 2)Fy, 3)Nz
7 - 1)Dy, 2)Fx, 3)Nx
8 - 1)Dy, 2)Fx, 3)Ny
9 - 1)Dy, 2)Fx, 3)Nz
10- 1)Dy, 2)Fy, 3)Nx
11- 1)Dy, 2)Fy, 3)Ny
12- 1)Dy, 2)Fy, 3)Nz
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.11.2016, 18:31
Я просил привести пример для вашего варианта:
Цитата Сообщение от CRIDEL Посмотреть сообщение
может быть например D,F,N,J и x,y,g
Произвел генерацию всех сочетаний:
Dx, Dy, Dg
Fx, Fy, Fg
Nx, Ny, Ng
Jx, Jy, Jg

Добавлено через 1 минуту
Возможно Вам нужно что то подобное: Генерация всех возможных словосочетаний из столбцов
0
6180 / 945 / 313
Регистрация: 25.02.2011
Сообщений: 1,381
Записей в блоге: 1
26.11.2016, 18:41
Применительно для Ваших данных решение в Excel на VBA (ничего в коде не менял, только вставил данные)
Вложения
Тип файла: zip Слова20-2.zip (16.3 Кб, 5 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2016, 18:41
Помогаю со студенческими работами здесь

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел
Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал разбираться с массивами простенькие задачки вроде...

Получить все возможные комбинации массива чисел
Привет всем! Подскажите, пожалуйста, кто сталкивался, второй день бьюсь и не соображу ) Есть массив, скажем, 100 целых не...

Массивы: Все элементы, следующие за наибольшим элементом массива, увеличить на 10
Все элементы, следующие за наибольшим элементом массива, увеличить на 10

Для пары чисел получить все комбинации сложения и вычитания
Нужно решить задачу на ассемблере. Преподаватель задает два базовых числа ± X и ± Ү. Студент должен прибавить и отнять от них № своего...

Высчитать все различные комбинации сумм элементов, чтобы в результате получилось число 1.5
суть такая, Есть массив напр: $ar=0.5; $ar=0.375; $ar=0.1; В массиве может быть как больше так и меньше элементов, необходимо...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru