Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизРабота с 3-х мерными массивами! Найти похожие ветки
← →
grol © (2005-06-05 04:33) [0]Уважаемые мастера!!! Ответьте мне пожалуйста на такой "ламерский" вопрос: как создавать дмнамические 3-х мерные массивы? От сюда же следует, как в них записывать значения и соответствено, как обращаться к определенным элемента такого массива? И хотелось, желательно, чтоб, на примере использовалось Setlength! Спасибо заранее.
P.S.: Ламер он и в Африке ламер (это я про себя)! :-)))
← →
Defunct © (2005-06-05 04:57) [1]Причем тут ламер и ламерство?
Не сомневаюсь, задать одномерный массив вы умеете. И работать с ним тоже явных проблем у вас не вызывает.
Пример - пачка сигарет.
Type
Пачка_сигарет = Array[1..20] of Сигарета;
теперь давайте сделаем двумерный массив - для представления блока сигарет. Блок сигарет уже состоит из пачек:
Блок_сигарет = Array[1..10] of Пачка_сигарет
ну а блоки обычно транспортируются в ящиках (это как раз и будет трех мерный массив):
Ящик_сигарет = Array[1..10] of Блок_сигарет
Ящики в свою очередь в контейнерах, контейнеры еще в чем-то и т.д. В общем мерность может быть любой.
Теперь как же работать со всем этим. Рассмотрим, на примере, допустим 15-ю сигарету "скурили", и положили обратно в пачку N1, блока N1.
Сигареты1 : Пачка_сигарет;
Сигареты2 : Блок_сигарет;
Cинареты3 : Ящик_сигарет;
Сигареты1[15] := "Окурок";
Сигареты2[1][15] := "Окурок"; //
Сигареты3[1][1][15] := "окурок";
Надеюсь пример понятен.
← →
Abessalom (2005-06-05 05:22) [2]var
XYZ: array of array of array of Integer;
X, Y, Z: Integer;
begin
SetLength(XYZ, 3, 3, 3);
for X := 0 to High(XYZ) do
begin
for Y := 0 to High(XYZ[X]) do
begin
for Z := 0 to High(XYZ[X][Y]) do
begin
XYZ[X][Y][Z] := X * Y * Z;
DoSomeThing(XYZ[X][Y][Z]);
end;
end;
end;
end;
Надеюсь пример понятен.
← →
Anatoly Podgoretsky © (2005-06-05 11:06) [3]Abessalom (05.06.05 05:22) [2]
А что в Д7 сделали такую форму SetLength c тремя размерностями?
← →
Abessalom (2005-06-05 11:12) [4]
> Anatoly Podgoretsky © (05.06.05 11:06) [3]
Да:)
← →
begin...end © (2005-06-05 11:12) [5]> Anatoly Podgoretsky © (05.06.05 11:06) [3]
А что, в D5 такой формы ещё не было?
← →
Abessalom (2005-06-05 11:14) [6]
> begin...end © (05.06.05 11:12) [5]
А была? ;) Я всегда думал что так она и есть, а вот..)
← →
Anatoly Podgoretsky © (2005-06-05 11:15) [7]begin...end © (05.06.05 11:12) [5]
Только двухмерных, на трехмерные ругалась за синтаксис.
← →
begin...end © (2005-06-05 11:24) [8]> Abessalom (05.06.05 11:14) [6]
Для двумерных -- помню, работало. Для бОльших размерностей -- не помню.
← →
!Trinix © (2005-06-05 14:03) [9]А че-это вы пишите?
mas : array array array of integer
← →
!Trinix © (2005-06-05 14:16) [10]Сори
mas : array of array of array of integer
И работай, как с обычным масивомi[x,y,z]
← →
Abessalom (2005-06-05 15:47) [11]
> !Trinix © (05.06.05 14:03) [9]+[10]
Про запятые что-ли?
← →
Alexey2005 (2005-06-06 14:08) [12]Anatoly Podgoretsky © (05.06.05 11:15) [7]
Только двухмерных, на трехмерные ругалась за синтаксис.
- а не надоело ответы лепить не зная дела - все проходит без проблем и с тремя параметрами в D5
var a:array of array of array of integer;
....
setlength(a,2,2,2);
все работает.
← →
Anatoly Podgoretsky © (2005-06-06 14:17) [13]Alexey2005 (06.06.05 14:08) [12]
А я последний раз проверял в Д3.
Да и не важно с какой версии синтаксис расширили, важно, что работает в Д7, другой версии автором не указано.
← →
begin...end © (2005-06-06 14:47) [14]> Anatoly Podgoretsky © (06.06.05 14:17) [13]
> А я последний раз проверял в Д3.
Что проверяли-то? Динамические массивы, в Д3? LOL.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c