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
Личные инструменты