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

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

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

Возьмите N=3, M=2 и нарисуйте ВЕСЬ массив, который должен получиться. Вот тогда и посмотрим...
...
Рейтинг: 0 / 0
09.09.2011, 00:29
    #37431835
Vlad86Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность длинной N из чисел 1,..., M на VBA
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
09.09.2011, 00:55
    #37431847
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность длинной N из чисел 1,..., M на VBA
Vlad86Z,

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

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

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

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

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

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

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

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


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