|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Задача сосотоит в нахождении такого массива, где в стороке будет отображаться вариант длины N из чисел 1,..., M, при чем M-тые значения в отдельных ячейках. Пример при N=4 массив такой: 0 0 0 0 0 0 0 1 ..... 0 0 0 М 0 0 М 0 0 0 М 1 ..... M M M M При условии, что N и M задаються из ячеек или из окна. Я не программист, "убил" 2 месяца на освоение VBA, результат 0. Валюсь на начальных этапах, поэтому для сравнения кода нет. Если кто может помочь, буду очень благодарен. (Важно: код нужен на VBA). Заранее, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2011, 17:26 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Массив должен быть таким, как вы изобразили (перебор от 1 до M есть только в последней (N) "ячейке", а в остальных (от первой до N-1) нули после каждого цикла меняются тупо на M? Или всё-таки у вас присутствует ошибка, и перебор значений от 1 до M производится в каждом разряде? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2011, 18:53 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Vlad86Z, ну.хоть, покажь - как делал.... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2011, 22:31 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTM, выглядеть должно примерно так как на скриншоте ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2011, 11:24 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
ZezaM, Sub TEST() Const N = 7 Dim ar(N) As Integer, lev As Integer, nrow As Integer Cells.Clear lev = 1: ar(lev) = 1 1: For i = 1 To lev - 1 'проверяем, не был ли выбран элемент ранее If ar(i) = ar(lev) Then ' не месте (i) был выбран ранее, следует взять другой If ar(lev) < N Then ar(lev) = ar(lev) + 1 GoTo 1 'повторяем попытку для другого значения Else ' выбор на месте LEV уже исчерпан GoTo 2 'идем на уменьшение LEV End If End If Next ' ar(lev) наконец-то выбран If lev < N Then 'увеличиваем LEV и повторяем поиск невыбранного элемента lev = lev + 1 ar(lev) = 1 GoTo 1 Else ' выбраны все элементы, можно печатать вариант s = "" For i = 1 To N s = s & ar(i) Next nrow = nrow + 1 For i = 1 To N Cells(nrow, i) = ar(i) Next 2: lev = lev - 1 ' отступаем назад, чтобы выбрать другой элемент If lev < 1 Then End ' LEV дальше уменьшать некуда - все варианты исчерпаны If ar(lev) < N Then ' такая возможность еще имеется ar(lev) = ar(lev) + 1 GoTo 1 Else ' на уровне LEV такой возможности уже нет GoTo 2 ' идем на дальнейшее уменьшение LEV End If End If End Sub Вот код перестановок (взял на форуме за основу, похожие задачи), смог зделать только что бы значения М в отдельных ячейках были, а остальное (N задавалось и саму последовательность) переделать не смог. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2011, 11:28 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTM, Тема: Последовательность длинной N из чисел 1,..., M на VBA Неудачный пример привел просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2011, 12:46 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Vlad86ZТема: Последовательность длинной N из чисел 1,..., M на VBA Неудачный пример привел просто. Программу-то написАть - раз плюнуть. А вот про "последовательность" я так и не вкурил до сих пор. Ваши "примеры", "скриншоты" не дают главного - как строится последовательность. Вы приводите нам "примеры", как вы сами поняли задачу, что ли? Возьмите N=3, M=2 и нарисуйте ВЕСЬ массив, который должен получиться. Вот тогда и посмотрим... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2011, 20:55 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTMVlad86ZТема: Последовательность длинной N из чисел 1,..., M на VBA Неудачный пример привел просто. Программу-то написАть - раз плюнуть. А вот про "последовательность" я так и не вкурил до сих пор. Ваши "примеры", "скриншоты" не дают главного - как строится последовательность. Вы приводите нам "примеры", как вы сами поняли задачу, что ли? Возьмите N=3, M=2 и нарисуйте ВЕСЬ массив, который должен получиться. Вот тогда и посмотрим... 001 002 010 011 012 020 021 022 200 201 202 210 211 212 222 я увидел ошибки в примерах, просто массив будет проходить расшифровку далее и поэтому писал как было бы удобнее, но понимаю, что код последовательность выглядит как вописано в этом сообщении ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 00:29 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Vlad86Z, 000 отсутствует ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 00:55 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Все равно принцип непонятен Почему 022 -> 200 ? Почему 212 -> 222 ? Давайте тогда полный пример для N=4 и M=2... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 02:12 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTM, 001 002 010 011 012 020 021 022 100 101 102 110 111 112 120 121 122 200 201 202 210 211 212 220 221 222 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 10:24 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
0 0 0 1 0 0 0 2 0 0 1 0 0 0 1 1 0 0 1 2 0 0 2 0 0 0 2 1 0 0 2 2 0 1 0 0 0 1 0 1 0 1 0 2 0 1 1 0 0 1 1 1 0 1 1 2 0 1 2 0 0 1 2 1 0 1 2 2 0 2 0 0 0 2 0 1 0 2 0 2 0 2 1 0 0 2 1 1 0 2 1 2 0 2 2 0 0 2 2 1 0 2 2 2 1 0 0 0 1 0 0 1 1 0 0 2 1 0 1 0 1 0 1 1 1 0 1 2 1 0 2 0 1 0 2 1 1 0 2 2 1 1 0 0 1 1 0 1 1 1 0 2 1 1 1 0 1 1 1 1 1 1 1 2 1 1 2 0 1 1 2 1 1 1 2 2 1 2 0 0 1 2 0 1 1 2 0 2 1 2 1 0 1 2 1 1 1 2 1 2 1 2 2 0 1 2 2 1 1 2 2 2 2 0 0 0 2 0 0 1 2 0 0 2 2 0 1 0 2 0 1 1 2 0 1 2 2 0 2 0 2 0 2 1 2 0 2 2 2 1 0 0 2 1 0 1 2 1 0 2 2 1 1 0 2 1 1 1 2 1 1 2 2 1 2 0 2 1 2 1 2 1 2 2 2 2 0 0 2 2 0 1 2 2 0 2 2 2 1 0 2 2 1 1 2 2 1 2 2 2 2 0 2 2 2 1 2 2 2 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 10:26 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Вот это уже ближе к телу. Мог бы и просто сказать, что ошибся с условием , на что намекалось 11243591 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 10:36 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Vlad86Z, с учётом наступившей ясности, дело не в VBA, задача чисто на математику. Называется "перевод беззнакового целого в другую систему счисления". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 10:54 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
результат: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 10:55 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Именно так, камрады, именно так... Прилагаемый пример, естественно, не включает проверок на переполнение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 11:44 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTMИменно так, камрады, именно так... Прилагаемый пример, естественно, не включает проверок на переполнение. То что нужно, большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 12:35 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
AndreTMИменно так, камрады, именно так... Прилагаемый пример, естественно, не включает проверок на переполнение. А на сколько тяжело изменить диапазон изменения М, с рассматриваемого от 1 до М (1, 2, 3, ..., М) на от -М до М (для М = 3: -3 ,-2, -1, 0, 1, 2, 3)? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 15:04 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Vlad86ZAndreTMИменно так, камрады, именно так... Прилагаемый пример, естественно, не включает проверок на переполнение. А на сколько тяжело изменить диапазон изменения М, с рассматриваемого от 1 до М (1, 2, 3, ..., М) на от -М до М (для М = 3: -3 ,-2, -1, 0, 1, 2, 3)? или еще лучший вариант задавать границы для М, например от -2 до 3 (-2,-1, 0, 1, 2, 3) или от 10 до 15 (10, 11, 12, 13, 14, 15). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2011, 15:16 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
Достаточно использовать вместо константы M - массив M(x) с набором нужных значений. При этом алгоритм программы не меняется, только теперь "бывшее" M будет означать индекс элемента внутри этого массива... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2011, 16:08 |
|
Последовательность длинной N из чисел 1,..., M на VBA
|
|||
---|---|---|---|
#18+
вдогонку ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2011, 16:08 |
|
|
start [/forum/topic.php?fid=60&msg=37431878&tid=2158448]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 284ms |
0 / 0 |