За неимением другого ПО, пишу в Excel VBA генератор матриц. Суть такова: для заданных числа уровней n и количества факторов k построить матрицу с n[SUP]k[/SUP] строк и k столбцов, заполненную числами от 0 до n-1 так, чтобы строки не повторялись.
Или, переводя с ежиного, каждая строка суть значение её номера в системе счисления с основанием n, разбитое на k ячеек по одному символу в каждой.
Написал код. В нём есть допущения, он узкоспецифичен и наверняка не оптимален, но работает так, как надо. Почти.
Получаю для случая n = 2 и k = 6 следующее:
(ошибку в строках 8 и 64, тех, где вычисленный логарифмом r из первой строки кода - целое число)
http://cs627426.vk.me/v627426689/67711/VPibc5jc8q0.jpg
Предположил, что проблема в округлении, но за неимением опыта работы с VBA (только VB и мноооого лет назад), не могу её решить. Помогите!
Или, переводя с ежиного, каждая строка суть значение её номера в системе счисления с основанием n, разбитое на k ячеек по одному символу в каждой.
Написал код. В нём есть допущения, он узкоспецифичен и наверняка не оптимален, но работает так, как надо. Почти.
Код:
Function DEC2ANYN(A As Integer, n As Integer, pos As Integer) As Integer
Dim i As Integer, ost As Integer, r As Integer
r = Fix(Log(A) / Log(n))
If pos < r + 1 Then r = pos
i = 0
Do While i < r
i = i + 1
ost = A Mod n
A = A \ n
Loop
If pos = r + 1 Then ost = A
If pos > r + 1 Then ost = 0
DEC2ANYN = ost
End Function
(ошибку в строках 8 и 64, тех, где вычисленный логарифмом r из первой строки кода - целое число)
http://cs627426.vk.me/v627426689/67711/VPibc5jc8q0.jpg
Предположил, что проблема в округлении, но за неимением опыта работы с VBA (только VB и мноооого лет назад), не могу её решить. Помогите!