|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||||||||||||||||||||||||
Вложенный массив в классе11.04.2025, 11:34. Показов 2435. Ответов 24
Метки нет (Все метки)
Создал вот такую конструкцию
Например
Я очень плохо понимаю многомерности и массивы, так что ожидаемо запутался. Сама задача: у меня есть потребность хранить дерево из 256 элементов, как выше это "ba" и каждый элемент должен быть листом и так на 16 уровней вниз. Как правильно это организовать? PS: видимо чтобы не городить
Добавлено через 10 минут даже так наверное:
0
|
||||||||||||||||||||||||||||||||||||
| 11.04.2025, 11:34 | |
|
Ответы с готовыми решениями:
24
В базовом классе: массив и абстрактный метод суммы его элементов. В производном классе реализовать метод. json массив вложенный в json массив Как можно распарить? |
| 11.04.2025, 12:15 | |||||||||
0
|
|||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||||||||||||||
| 11.04.2025, 12:42 [ТС] | |||||||||||||||||||||||
Добавлено через 8 минут Uswer, вот написал такой кусок, он конечно не реализует необходимую логику обхода:
Добавлено через 7 минут я тут посчитал что на 16 уровне будет 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 * 256 элементов и загрустил )))))
0
|
|||||||||||||||||||||||
|
|
|||||||||||
| 11.04.2025, 12:51 | |||||||||||
|
Не совсем ясно про "уровни", может что-то типа такого:
0
|
|||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 11.04.2025, 12:58 [ТС] | ||
|
216 даёт 64К 25616 даёт МНОГО
0
|
||
| 11.04.2025, 13:47 | ||||||||||||
|
belalugoci, то что вы делаете очень похоже на узел дерева TreeNode.
Использование
1
|
||||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||
| 11.04.2025, 14:45 [ТС] | |||||||
|
Uswer, Как я понимаю levelsCount-- понизит уровень на нулевом же элементе, то есть для ba.bytes[i] = newByteArr; на следующей итерации уровень будет на 1 ниже, что уже неверно. Или я не так понял код?Добавлено через 1 минуту наверно лучше сделать так:
0
|
|||||||
|
|
||
| 11.04.2025, 14:49 | ||
|
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||
| 11.04.2025, 14:57 [ТС] | ||||||||
на каждом уровне мы получаем 256 новых потомков от одного родителя, то есть 25616 для 16 уровней. Если 256 вводит в заблуждение - представьте двоичное дерево, там каждый родитель порождает 2 потомка, соответственно для 16 уровней будет 216
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 11.04.2025, 15:10 [ТС] | ||
|
0
|
||
|
|
||
| 11.04.2025, 22:14 | ||
|
Здесь инициируется только первый [0] элемент текущего уровня переданного bytesArray, а затем, так как levelsCount > 0 произойдет выход из цикла и рекурсивное создание следующего уровня. Оставшиеся 255 элементов уровней будут пустыми (null).
0
|
||
|
|
|
| 12.04.2025, 01:42 | |
|
Uswer, хе-хе, все последние элементы
bytes в уровнях будут null. Т.е. пустые классы bytesArray:Я говорил belalugoci, что структура неверная. Это и не дерево и не матрица... Тут надо графически посмотреть на нужный результат - что должно то в итоге получится..
0
|
|
|
|
|
| 12.04.2025, 02:18 | |
|
Если класс bytesArray содержит в себе себя самого в кол-ве 256 штук, то их надо все инициировать. Это будет происходить до бесконечности. Иначе последние будут нуллами, когда закончатся "уровни".
Надо пересматривать структуру. Добавлено через 17 минут Если действительно предполагалось двоичное дерево, то в структуру нужно ввести понятие Узла, в котором должно быть некоторое свойство, по которому можно определять (сравнивать) их между собой и располагать их справа/слева от родительского. В данном классе, в качестве такого свойства узла можно применить свойство класса temp, например. Но пока таких намеков и близко нет, поэтому никакого дерева тут не построить.А вот 3D массив можно. Добавлено через 14 минут belalugoci, если не трудно, нарисуйте на бумажке что должно получится из всего этого. Если дерево - то должны быть связи (ребра), если матрица - то какие-то размерности... Пока из данного класса bytesArray в таком виде трудно извлечь какую-л. практическую пользу.
0
|
|
|
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
|
|
| 12.04.2025, 03:51 | |
|
belalugoci, насколько понял, то нужно создать класс для шестнадцатимерного массива.
(Где-то встречал, что ограничение на количество мерностей в C# - 32. На количество параметров метода не может превышать 255.) Однако было указано, что инициализировать нужно только первую мерность (256 объектов). А при указании конкретных элементов остальных мерность для изначального будет возвращать null. (наверно для начала пока так).Затем должен быть механизм инициализации/добавления одного определённого объекта с конкретным указанием значений всех 16-ти индексов мерностей массива. Т.е. не нужно будет хранить значения всех 340282366920938463463374607431768211456 ячеек. Понадобится только хранить значения только для определённых наборов указанных индексов (16 чисел) и сам объект (байт, целое, картинка?). И возвращать объект только в случае совпадения с существующим набором из шестнадцати индексов. В остальном случае - возврат null
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||||||||||||||
| 12.04.2025, 09:02 [ТС] | ||||||||||||||||||||||||||
нарисовать такое физически невозможно в силу огромного числа элементов.
Тогда будет вместо 256 256 ... 256 3 5, 7, 2 то есть на первом уровне три элемента, а не все 256 и т.д. А Dictionary позволяет индексировать существующее или создавать несуществующие. Это идея. Добавлено через 1 минуту roach1967, только пока в голове не могу всё это оформить )
0
|
||||||||||||||||||||||||||
| 12.04.2025, 09:02 | |
|
Помогаю со студенческими работами здесь
20
Как использовать информацию парсированую в 1 классе в другом классе
Добрый день, подскажите пожалуйста как вызвать Esep1() в другом классе, ошибка в классе Program при вызове Esep1() Само сообщение или вложенный файл? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|