powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / 3-х мерный массив
15 сообщений из 15, страница 1 из 1
3-х мерный массив
    #39472305
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите как заполнить 3-х мерный массив циклом?
Необходимо чтобы массив заполнился следующим образом, размерность a(69,4,4).
a(0,0,0)=6, a(0,0,1)=7, a(0,0,2)=8, a(0,0,3)=9,a(0,0,4)=10
a(1,0,0)=13, a(1,0,1)=14,a(1,0,2)=15,a(1,0,3)=16,a(1,0,4)=17.
a(69,4,4) должен равняться 486.
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472326
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не раскрыт принцип заполнения второй размерности
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472329
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, в чем проблема выявить зависимость значения от индекса каждого измерения, записать его формулой a* i + b * j + с * k
и записать внутри трех вложенных циклов?
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472336
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest0505a(69,4,4) должен равняться 486.Уверен?
Вот кабы 495, то получилось бы красиво:
Код: vbnet
1.
a(i,j,k)=7*i-2*j+k
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472360
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь напутал немного с размерностью когда начал на бумаге заполнять массив.
а(0,0,0)=6
a(0,1,0)=7
a(0,2,0)=8,
a(0,3,0)=9,
a(0,4,0)=10
a(1,0,0)=13,
a(1,1,0)=14,
a(1,2,0)=15,
a(1,3,0)=16,
a(1,4,0)=17.
С последним элементом массива не напутал 486.
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472369
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока что я делаю вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
    For i = 0 To arrlen
         For j = 0 To 4
             For k = 0 To 1
                arrMatrix(i, j, k) = arrAdress(j)
             Next k
         Next j
         arrAdr
    Next i


Последний элемент у меня получился 493
arrAdr-функция
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
 Function arrAdr()
     For i = 0 To 4
        arrAdress(i) = adr
        adr = adr + 1
     Next i
     adr = adr + 2
  End Function
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472392
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472404
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятно, зачем вообще нужен массив, если его элемент описывается линейным уравнением от индекса
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472778
quest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, другого решения я просто не знаю.
Задам глупый вопрос, но что это за уравнения от индекса?
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472800
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста более рациональный подход к задаче.
Необходимо чтобы пользователь мог отображать/скрывать столбцы.

В строку расположены 68 месяцев, в каждом месяце 5 столбцов которые нужно отображать/скрывать (соответственно 5 чеков).
Я пошел через матрицы, номер месяца это номер строки, чек это номер столбца матрицы, 3 размерность матрицы это адрес столбца.
Пока форма существует вроде работает, при закрытии все скрытые столбцы отображаются.
Как то можно по другому сделать? Я видимо через пятую точку делаю сейчас.
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472809
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пока вообще не понимаю принцип заполнения массива.
В первом примере вы не привели пример заполнения второй размерности, во втором примере - третьей.
Если нужно заполнять только две размерности, то для чего три цикла?
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472841
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто я не смог заполнить массив как мне нужно, поэтому сделал "массив-прокладку" с адресами столбцов.
Заполняется все правильно.
Столкнулся с такой проблемой
Пока форма существует вроде работает, при закрытии все скрытые столбцы отображаются.
Как то можно по другому сделать?
...
Рейтинг: 0 / 0
3-х мерный массив
    #39472963
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз - есть два вопроса:
1) массив, его заполнение и необходимость
2) скрытие каких-то столбцов

Я говорю исключительно о первом вопросе - если элемент массива в любой момент можно вычислить на основании его индексов по простейшей формуле, то зачем этот массив вообще нужен, вместо него можно просто использовать функцию. Пример формулы в общем виде я приводил выше, но так как принцип заполнения массива полностью (по трем измерениям) до сих пор неясен, то я не могу написать ее с конкретными константами.
Скорее всего, там еще добавится смещение
Код: plaintext
a* i + b * j + с * k + 6

По второму вопросу невозможно ничего сказать - ваш экран нам не видно, где у вас там эти столбцы, в экселе, в ворде, в массиве или еще где - вы не сочли нужным сообщить.
...
Рейтинг: 0 / 0
3-х мерный массив
    #39475395
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего, у ТС таблица на листе Excel. Трехмерная, развернутая в плоскую. И в массив он загоняет номера столбцов. И ему наверное требуется столбцы скрывать в зависимости от условий, вот он и берет нужные номера прямо из массива блоками, чтобы циклом скрытие/отображение делать...
В общем, сделаны все ошибки, начиная от момента проектирования хранилища данных и заканчивая смешиванием в одной форме операций и процессов ввода, хранения и отображения.

По теме: если нужно рассчитать начальный номер столбца "блока месяца" (внутри же блока это будут пять последовательных чисел), то формула будет:
col(i) = 7*i + 6
Т.е. (нумерация месяцев идет от 1 до 68),если нам нужен "пятый месяц" - то получаем ответ col = 41, соответственно это столбцы 41,42,43,44,45
Никаких "массивов" для таких расчетов просто не требуется, о чем и пытался втолковать Shocker.Pro.

В качестве примера:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub blockNShowHide(n As Integer)
    Dim c As Integer
    If n > 0 And n < 69 Then
        c = 7 * n + 6
        Columns(c).Resize(, 5).Hidden = Not Columns(c).Hidden
    End If
End Sub

Sub test()
    blockNShowHide 2
End Sub

Вызов функции с параметром - номером месяца - скрывает/отображает блок колонок этого месяца...
...
Рейтинг: 0 / 0
3-х мерный массив
    #39475913
guest0505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Все верно, спасибо большое.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / 3-х мерный массив
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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