Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.48 MB
Время: 0.042 c
3-1116145372
_e_u_
2005-05-15 12:22
2005.06.29
пропал текст из ДБгрида


14-1117785112
Иксик
2005-06-03 11:51
2005.06.29
Из Москвы в Кондрово


1-1117790059
sofs
2005-06-03 13:14
2005.06.29
Как преодразовать HEX-число в символ?


3-1115992749
Вольный Стрелок
2005-05-13 17:59
2005.06.29
ручная установка флага состояния записи в ClientDataSet


9-1111585363
Starter
2005-03-23 16:42
2005.06.29
Misc of GLScene





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский