- Код: Выделить всё
var
massiv : array of array of array of byte;
CountB : array [0..11] of byte;
CountC : array [0..21] of byte;
заполняется примерно так:
- Код: Выделить всё
for a := 0 to 10 do CountB[a] := a; // таким образом неоднородно заполняем CountB
for b := 0 to 20 do CountC[b] := b; // таким образом неоднородно заполняем CountC
// тут создаём неоднородный массив
SetLength(massiv, 11),
for a := 0 to 10 do begin
SetLength(massiv[a], CountB[a]+1);
for b := 0 to CountB[b] do
SetLength(massiv[a,b], CountС[b]+1);
end;
// и как следствие получаем многомерный неоднородный массив, который потом заполняем:
for a := 0 to 10 do
for b := 0 to CountB[a] do
for c := 0 to CountC[b] do
massiv[a,b,c] := c div 2;
Теперь многомерный неоднородный massiv[a,b,c] -- нужно преобразовать к одномерному массиву. Если-бы массив был-бы однородным, то это просто.
А вот, для неоднородного многомерного массива, есть-ли готовая формула перевода в одномерный массив?
PS: безусловно вариант с inc(i) -- 100% не подходит, потому что, в итоге, нужно получить доступ к значениям в одномерном массиве по тем-же вышеприведённым циклам: a, b, c.