![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с 3-х мерными массивами! [D7, WinXP]
grol © (2005-06-05 04:33:00)Уважаемые мастера!!! Ответьте мне пожалуйста на такой "ламерский" вопрос: как создавать дмнамические 3-х мерные массивы? От сюда же следует, как в них записывать значения и соответствено, как обращаться к определенным элемента такого массива? И хотелось, желательно, чтоб, на примере использовалось Setlength! Спасибо заранее.
P.S.: Ламер он и в Африке ламер (это я про себя)! :-)))
begin...end (2005-06-06 14:47:00) [1]> Anatoly Podgoretsky © (06.06.05 14:17) [13]
> А я последний раз проверял в Д3.
Что проверяли-то? Динамическиемассивы, в Д 3? LOL.
Anatoly Podgoretsky (2005-06-06 14:17:00) [2]Alexey2005 (06.06.05 14:08) [12]
А я последний раз проверял в Д3.
Да и не важно с какой версии синтаксис расширили, важно, что работает в Д7, другой версии автором не указано.
Alexey2005 (2005-06-06 14:08:00) [3]Anatoly Podgoretsky © (05.06.05 11:15) [7]
Только двухмерных, на трехмерные ругалась за синтаксис.
- а не надоело ответы лепить не зная дела - все проходит без проблем и с тремя параметрами в D5
var a:array of array of array of integer;
....
setlength(a,2,2,2);
все работает.
Abessalom (2005-06-05 15:47:00) [4]
> !Trinix © (05.06.05 14:03) [9]+[10]
Про запятые что-ли?
!Trinix (2005-06-05 14:16:00) [5]Сори
mas : array of array of array of integer
И работай, как с обычным масивом
i[x,y,z]
!Trinix (2005-06-05 14:03:00) [6]А че-это вы пишите?
mas : array array array of integer
begin...end (2005-06-05 11:24:00) [7]> Abessalom (05.06.05 11:14) [6]
Для двумерных -- помню, работало. Для бОльших размерностей -- не помню.
Anatoly Podgoretsky (2005-06-05 11:15:00) [8]begin...end © (05.06.05 11:12) [5]
Только двухмерных, на трехмерные ругалась за синтаксис.
Abessalom (2005-06-05 11:14:00) [9]
> begin...end © (05.06.05 11:12) [5]
А была? ;) Я всегда думал что так она и есть, а вот..)
Abessalom (2005-06-05 11:12:00) [10]
> Anatoly Podgoretsky © (05.06.05 11:06) [3]
Да:)
begin...end (2005-06-05 11:12:00) [11]> Anatoly Podgoretsky © (05.06.05 11:06) [3]
А что, в D5 такой формы ещё не было?
Anatoly Podgoretsky (2005-06-05 11:06:00) [12]Abessalom (05.06.05 05:22) [2]
А что в Д7 сделали такую форму SetLength c тремя размерностями?
Abessalom (2005-06-05 05:22:00) [13]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;
Надеюсь пример понятен.
Defunct (2005-06-05 04:57:00) [14]Причем тут ламер и ламерство?
Не сомневаюсь, задать одномерный массив вы умеете. И работать с ним тоже явных проблем у вас не вызывает.
Пример - пачка сигарет.
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] := 'окурок';
Надеюсь пример понятен.