powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Последовательность длинной N из чисел 1,..., M на VBA
22 сообщений из 22, страница 1 из 1
Последовательность длинной N из чисел 1,..., M на VBA
    #37429517
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача сосотоит в нахождении такого массива, где в стороке будет отображаться вариант длины 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).
Заранее, спасибо.
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37429690
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Массив должен быть таким, как вы изобразили (перебор от 1 до M есть только в последней (N) "ячейке", а в остальных (от первой до N-1) нули после каждого цикла меняются тупо на M?
Или всё-таки у вас присутствует ошибка, и перебор значений от 1 до M производится в каждом разряде?
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37429866
ZezaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad86Z,
ну.хоть, покажь - как делал....
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37430296
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

выглядеть должно примерно так как на скриншоте
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37430303
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 задавалось и саму последовательность) переделать не смог.
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37430515
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Тема: Последовательность длинной N из чисел 1,..., M на VBA
Неудачный пример привел просто.
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37431629
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad86ZТема: Последовательность длинной N из чисел 1,..., M на VBA
Неудачный пример привел просто.
Программу-то написАть - раз плюнуть.
А вот про "последовательность" я так и не вкурил до сих пор.
Ваши "примеры", "скриншоты" не дают главного - как строится последовательность.
Вы приводите нам "примеры", как вы сами поняли задачу, что ли?

Возьмите N=3, M=2 и нарисуйте ВЕСЬ массив, который должен получиться. Вот тогда и посмотрим...
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37431835
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMVlad86ZТема: Последовательность длинной N из чисел 1,..., M на VBA
Неудачный пример привел просто.
Программу-то написАть - раз плюнуть.
А вот про "последовательность" я так и не вкурил до сих пор.
Ваши "примеры", "скриншоты" не дают главного - как строится последовательность.
Вы приводите нам "примеры", как вы сами поняли задачу, что ли?

Возьмите N=3, M=2 и нарисуйте ВЕСЬ массив, который должен получиться. Вот тогда и посмотрим...

001
002
010
011
012
020
021
022
200
201
202
210
211
212
222

я увидел ошибки в примерах, просто массив будет проходить расшифровку далее и поэтому писал как было бы удобнее, но понимаю, что код последовательность выглядит как вописано в этом сообщении
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37431847
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad86Z,

000 отсутствует
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37431878
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно принцип непонятен
Почему 022 -> 200 ?
Почему 212 -> 222 ?

Давайте тогда полный пример для N=4 и M=2...
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432136
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432143
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432162
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это уже ближе к телу. Мог бы и просто сказать, что ошибся с условием , на что намекалось 11243591 ...
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432190
Vlad86Z,

с учётом наступившей ясности, дело не в VBA, задача чисто на математику. Называется "перевод беззнакового целого в другую систему счисления".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function Test(ByVal N As Long, ByVal M As Long, ByVal X As Long) As Long()
 Dim R() As Long
 Dim i As Long
 ReDim R( 0  To N -  1 ) As Long
 M = M +  1 
 Do
    R(i) = X Mod M
    X = X \ M
    i = i +  1 
 Loop While X
 Test = R
End Function
Проверка в окне Immediate:
Код: plaintext
N= 4 :M= 2 :A=Test(N,M, 57 ):For i=N- 1  to  0  step - 1 :?A(i),:Next:?
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432197
результат:
Код: plaintext
  2               0               1               0             
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432327
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно так, камрады, именно так...

Прилагаемый пример, естественно, не включает проверок на переполнение.
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432468
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMИменно так, камрады, именно так...

Прилагаемый пример, естественно, не включает проверок на переполнение.

То что нужно, большое спасибо.
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432835
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMИменно так, камрады, именно так...

Прилагаемый пример, естественно, не включает проверок на переполнение.

А на сколько тяжело изменить диапазон изменения М, с рассматриваемого от 1 до М (1, 2, 3, ..., М) на от -М до М (для М = 3: -3 ,-2, -1, 0, 1, 2, 3)?
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37432868
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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).
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37433945
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно использовать вместо константы M - массив M(x) с набором нужных значений.
При этом алгоритм программы не меняется, только теперь "бывшее" M будет означать индекс элемента внутри этого массива...
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37433946
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку
...
Рейтинг: 0 / 0
Последовательность длинной N из чисел 1,..., M на VBA
    #37434098
Vlad86Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Спасибо.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Последовательность длинной N из чисел 1,..., M на VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]