Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Работа с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.04 c
14-1117525220
Cerberus
2005-05-31 11:40
2005.06.29
Слышал в новостях


8-1109699665
Руслана
2005-03-01 20:54
2005.06.29
Где можно почитать о создании собственного кодека (аудио)


4-1114784588
Виталик
2005-04-29 18:23
2005.06.29
Соответствие классов в Delphi и Си


1-1117797095
San Sanich
2005-06-03 15:11
2005.06.29
Текст разного цвета


4-1115532157
Неуловимый Джо
2005-05-08 10:02
2005.06.29
имя exe-файла сервиса