![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамический массив [D6, Win2k]
Linder © (2002-11-14 13:53:00)Всем привет!
Уважаемые Мастера, подскажите, плиз.
Динамический массив описывается так:
var mas1: array of byte;
Устанавливаем длину массива так:
SetLength(mas1, 10);
В этом случае мы получим одномерный массив.
А как описать двухмерный массив? (на-пример: mas2[3,5])
И как устанавливать его длину по разным измерениям?
Kibitzer (2002-11-14 17:53:00) [1]
> Marcus (14.11.02 14:01)
> type TByteArray = array of byte;
>
> var
> A: array of TByteArray;
>
> SetLength(A, 10);
> for i := 0 to High(A) do
> SetLength(A[i], 15);
>
> получишь массив 10х15
Слишком много всего для создания "прямоугольного" массива достаточно сделать так как предложил Misha.
Если нужен "непрямоугольный" массив, тогда другое дело.
Пример "треугольного" массива:
...
var
A: array of array ofByte;
i: Integer;
begin
SetLength(A, 15);
fori := 0 to14 doSetLength(A[i], i+1);
...
Alx2 (2002-11-14 14:08:00) [2]>Linder (14.11.02 14:06)
Я дал два варианта. Один из них без секса 8)
Linder (2002-11-14 14:06:00) [3]>Alx2
Слишком много секса...
Ты бы еще предложил Интегралы использовать. :))
>Marcus
Спасибо, сейчас попробую.
Marcus (2002-11-14 14:01:00) [4]type TByteArray = array of byte;
var
A: array of TByteArray;
SetLength(A, 10);
for i := 0 to High(A) do
SetLength(A[i], 15);
получишь массив 10х15
Misha (2002-11-14 13:59:00) [5]попробуй array of array of byte
SetLength(a,10,10)
Внук (2002-11-14 13:59:00) [6]var mas2: array of array byte;
SetLength(mas2, 3);
SetLength(mas2[0], 5);
SetLength(mas2[1], 5);
SetLength(mas2[2], 5);
Alx2 (2002-11-14 13:59:00) [7]>Linder (14.11.02 13:53)
array of array of byte - массив массивов переменной длины.
Если хочешь сохранить жесткую структуру MxN используй одномерный массив длины m*n и проецируй его индекс на декартово произведение [1..m]x[1..n] 8-)
таким образом инекс [a,b] превратится в линейный индекс (a-1)*n+b-1 (если индексы считать от единицы)