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

Вниз

напомните синтаксис измерения размеров массива   Найти похожие ветки 

 
>|<   (2012-05-31 17:13) [0]

Есть двумерный массив
var arr:array of array of integer;

как узнать его ширину и высоту?
Заранее благодарен за ответ.


 
>|<   (2012-05-31 17:18) [1]

такой вариант подойдет?
for i := 0 to High(arr) do
   for j := 0 to High(arr[i]) do


 
MBo ©   (2012-05-31 17:21) [2]

ещё Length


 
AV ©   (2012-05-31 17:24) [3]

i := High(arr);
 j := High(arr[i]);
 ShowMessageFmt("%d %d",[i,j]);

но
 SetLength(arr, 5);
 SetLength(arr[0], 3);
 SetLength(arr[2], 2);
и чему равно ширину и высоту? :)


 
>|<   (2012-05-31 17:28) [4]

тогда прошу уточнить:
если SetLength(arr, i,j)
то i = Length(arr) и j = Length(arr[i]) ?
или j=Length(arr) и i = Length(arr(j)] ?


 
Rouse_ ©   (2012-05-31 19:21) [5]

Ну вообще любой массив вырождается в дерево, а у дерева нельзя выбрать фиксированную глубину, разве что по узловому элементу.


 
Jeer ©   (2012-05-31 22:06) [6]

Для квадратного или прямоугольного массива все тривиально.


 
Ega23 ©   (2012-06-01 00:17) [7]


> как узнать его ширину и высоту?


В случае array of array of T - только "ширину" можно однозначно узнать, "высота" может быть различной.


 
Германн ©   (2012-06-01 01:52) [8]


> >|<   (31.05.12 17:18) [1]
>
> такой вариант подойдет?
> for i := 0 to High(arr) do
>    for j := 0 to High(arr[i]) do
>

Имхо, подойдёт если правильно расставить индексы в arr[х,y] :)
P.S.
Всегда, когда путался в индексации многомерных массивов вспоминал, что объявление статического двумерного массива можно задать двумя способами:

1. TArr = array[1..3,5..10] of Integer;
2. TArr = array[1..3][5..10] of Integer;

Хм. Та же мнемоника позволяет мне работать и с динамическими многомерными массивами.
И почему-то эта "мнемоника" всегда позволяла мне всегда вспомнить, что внешний цикл нужно делать:
for i:=1 to 3,
внутренний цикл нужно делать:
for j:=5 to 10,
А к элементу данного массива обращаться как к Arr[i,j]


 
Германн ©   (2012-06-01 03:10) [9]

Ах, да. Про SetLength не сказал.
"Дайте мне три пачки по пять штук". :)


 
Anatoly Podgoretsky ©   (2012-06-01 06:46) [10]

> Германн  (01.06.2012 03:10:09)  [9]

Первая размером в 5, вторая два, ...


 
han_malign   (2012-06-01 09:34) [11]


> В случае array of array of T - только "ширину" можно однозначно узнать, "высота" может быть различной.

- наоборот, матрицы адресуются [строка, столбец] - как по математическому определению, так и - трактовка "массив массивов" семантически более верна и интуитивно понятна.

(X,Y) - декартовых(экранных) - это уже совсем другой частный случай...
> если правильно расставить индексы в arr[х,y] :)
- поэтому рекомендуется использовать в качестве индексов не X,Y,Z, а I,J,K, если лень давать осмысленные предметные имена.

З.З.Ы. Вы меня блин даже чего то засомневали... пришлось на всякий случай проверочный код накидать...


 
>|<   (2012-06-01 11:02) [12]


> З.З.Ы. Вы меня блин даже чего то засомневали... пришлось
> на всякий случай проверочный код накидать...

кстати да, на прямой вопрос:
>|<   (31.05.12 17:28) [4]
никто так и не ответил.

Сейчас сам проверю в среде...


 
>|<   (2012-06-01 11:11) [13]

код для проверки:
program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

 var arr:array of array of integer;
begin
 try
   { TODO -oUser -cConsole Main : Insert code here }
   SetLength(arr, 5, 10);
   Writeln("Width ="+ IntToStr(Length(arr)));
   Writeln("Height ="+ IntToStr(Length(arr[0])));
   Readln;
 except
   on E:Exception do
     Writeln(E.Classname, ": ", E.Message);
 end;
end.


 
Jeer ©   (2012-06-01 14:23) [14]

Запомнить не так и сложно если адресоваться к двумерным ar[row][col]



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
6-1256728864
Usov
2009-10-28 14:21
2013.03.22
Проблема с логином на сайте (Indy)


15-1329458550
coward
2012-02-17 10:02
2013.03.22
FreeSoft AV


4-1264071675
Омлет
2010-01-21 14:01
2013.03.22
Восстановить путь ключа реестра по HKEY


15-1352731709
Kerk
2012-11-12 18:48
2013.03.22
Всякие полезные услуги в социальных сетях


2-1331501068
Дмитрий
2012-03-12 01:24
2013.03.22
Сохранение файла из потока