Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
>|<   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.075 c
2-1345045236
начинающий7
2012-08-15 19:40
2013.03.22
TreeView


3-1278794858
jziiiiiii
2010-07-11 00:47
2013.03.22
access adotable


15-1350838886
Лида
2012-10-21 21:01
2013.03.22
Обработка различных событий в Delphi


15-1339488214
ProgRAMmer Dimonych
2012-06-12 12:03
2013.03.22
Кириллические домены и GetAddrInfoW


15-1349535707
Baks
2012-10-06 19:01
2013.03.22
Увеличение громкости звука на ноутбуке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский