Ru:Arrays
Материал из Pocket Fallout для КПК на PDA PC PPC Mobile.
(Перенаправлено с Arrays)
[править]
Многомерные массивы
К сожалению, на PFSL можно создавать лишь одномерные массивы. Однако на практике зачастую необходимо создавать двумерные массивы (в 90% - двумерные, в остальных случаях измерений м.б. и больше).
Однако существует довольно простое решение данной проблемы. Двумерный массив из одномерного можно организовать по следующему алгоритму :
Размер_массива = высота_матрицы*ширина_матрицы; Индекс_элемента = высота_матрицы*y + x; Где : x,y - координаты осей матрицы
Далее, для удобства пользования таким массивом следует организовать функции-оболочки для чтения/записи элемента по координатам.
[править]
Пример
Дана матрица чисел размером 4х5 (двумерный массив). Следует организовать оболочку чтения/записи для данного двумерного массива.
var matrixHeight = 5; // Высота матрицы
var matrixWidth = 5;
var size = matrixHeight*matrixWidth; // размер массива
function GetIndex(x, y) //Рассчет индекса
return matrixHeight*y + x;
endfunction
function GetMyArrayElement(myArray, x, y) //Получить значение
return myArray[GetIndex(x,y)];
endfunction
procedure SetMyArrayElement(myArray, x, y, value) //Установить значение
myArray[GetIndex(x,y)] = value;
endfunction
procedure TestArray() var myArray[size]; SetMyArrayElement(myArray, 0, 1, "Hello !"); SetMyArrayElement(myArray, 1, 1, "World !"); var result = GetMyArrayElement(myArray, 0, 1); // Получим Hello ! endprocedure