Главная страница
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.048 c
2-1328888801
Каныбек
2012-02-10 19:46
2013.03.22
Ссылка на web страницу


2-1342699186
vasa777
2012-07-19 15:59
2013.03.22
правое меню


2-1340949433
Виктор
2012-06-29 09:57
2013.03.22
Delphi - Excel, автоматическое создание гиперссылки


2-1338721041
Разведка
2012-06-03 14:57
2013.03.22
Нужна проверка слабых мест


15-1329492368
поверфулл
2012-02-17 19:26
2013.03.22
Подскажите путевый учебник по HTML