Функции работы с массивами
В данном разделе собраны функции работы с массивами. О создании массивов см. раздел Переменные и выражения.
Инициализация и копирование массивов — InitArray, CopyArray [править | править код]
INT InitArray(varname ARRAY <Arr>, VARIANT <Value>)
Функция инициализирует массив <Arr>
значениями <Value>
, то есть всем элементам массива <Arr>
будет присвоено значение <Value>
. По-умолчанию массивы инициализируются нулями. Функция возвращает количество заполненных элементов массива.
INT CopyArray(VARNAME ARRAY <ToArr>, INT <ToBeg>, VARNAME ARRAY <FromArr>, INT <FromBeg>[, INT <Num>])
Функция копирует содержимое массива <FromArr>
в массив <ToArr>
. Параметры <FromBeg>
и <ToBeg>
определяют, начиная с какого элемента (<FromBeg>
) в массиве <FromArr>
происходит копирование и куда (начиная с какого) элемента (<ToBeg>
) происходит заполнение массива. <ToArr>
Необязательный параметр <Num>
задаёт количество копируемых элементов массива. Если он не задан, копирование осуществляется до тех пор, пока не закончится размерность одного из массивов. Функция возвращает количество скопированных элементов.
Пример
Defarr a[10], b[10]; =InitArray(a,10); 10 =a[5]; 10 a[3]=1; a[6]=8; =copyarray(b,2,a,1); 9 =a[1]; 10 =b[1]; 0 =a[2]; 10 =b[2]; 10 =a[3]; 1 =b[3]; 10 =a[4]; 10 =b[4]; 1
Получение информации о массиве — GetDimArray[править | править код]
Int GetDimArray(varname array <Arr>[, int <Index>])
Функция возвращает размерность массива <Arr>
. Параметр <Index>
определяет номер индекса, величину которого необходимо узнать:
<Index>
=1 — первый индекс;
<Index>
=2 — второй индекс (если есть)
<Index>
=3 — произведение первого индекса на второй (для двумерных массивов)
Если параметр <Index>
не задан, возвращается величина первого индекса массива.
Пример:
Defarr a[3], b[4,5]; =getdimarray(a); 3 =getdimarray(a,1); 3 =getdimarray(a,2); 0 =getdimarray(b); 4 =getdimarray(b,2); 5 =getdimarray(b,3); 20
Сортировка массива — SortArray[править | править код]
Logical SortArray(Array <Array>[, Logical <Asc>])
Функция сортирует массив <Array>
в соответствии с параметром <Asc>
и возвращает единицу, если массив отсортирован успешно или ноль - если нет. Параметр <Asc>
указывает направление сортировки.
<Asc>
=1 — сортировка по возрастанию (по умолчанию)
<Asc>
=0 — сортировка по убыванию.
Если массив двухмерный, то строки сортируются поочередно.внутри каждой строки (1-4) значения меняться будут, а со строки на строку (1-3) не переместятся
Пример
defarr b[10]; defarr aaa[10,2],bbb[10,2]; // Инициализируем массивы нулями NULLOUT=initarray(aaa,0); NULLOUT=initarray(bbb,0); NULLOUT=initarray(b,0); // Заполняем массивы aaa[1,1]=1; aaa[2,1]=2; aaa[3,1]=3; aaa[4,1]=1; aaa[5,1]=8; aaa[6,1]=12; aaa[7,1]=21; aaa[8,1]=14; aaa[2,2]=10; aaa[3,2]=1; b[1]=10; b[2]=11; b[3]=5; b[7]=-1; // Копируем массив aaa в массив bbb NULLOUT=copyarray(bbb,1,aaa,1); // Ищем в массиве aaa элемент, равный 8 в диапазоне индексов 1...20 // в этом случае массив представляется как одномерный =findinarray(aaa,8,1,20); 9 // Сортируем массив aaa =sortarray(aaa); 1 =aaa[7,1]; 8 // Сортируем массив aaa по убыванию =sortarray(aaa,0); 1 =aaa[7,1]; 1 =aaa[4,1]; 8 // Сортируем массив aaa по возрастанию =sortarray(aaa,1); 1 =aaa[7,1]; 8 aaa[5,1]="hjgjhghj" =sortarray(aaa); 0 NULLOUT=initarray(aaa,""); aaa[1,1]="klj"; aaa[2,1]="логнегн"; aaa[3,1]="a"; aaa[4,1]="b"; aaa[5,1]="d"; aaa[6,1]="c"; aaa[7,1]="21"; aaa[8,1]="14"; =sortarray(aaa); 1 =aaa[7,1]; "c" =sortarray(aaa,0); 1 =aaa[7,1]; "21" =sortarray(aaa,1); 1 =aaa[7,1]; "c" aaa[5,1]=1545; =sortarray(aaa); 0 =sortarray(b); 1 =b[8]; 5
Поиск элемента в массиве — FindInArray[править | править код]
INT FindInArray(varname array <Arr>, variant <Elem>[, int <Beg>[, int <Num>]])
Функция осуществляет поиск элемента <Elem>
в массиве <Arr>
. Необязательные параметры <Beg>
и <Num>
определяют диапазон индексов элементов массива, в котором осуществляется поиск. Если задан только параметр <Beg>
, поиск осуществляется с элемента массива с номером <Beg>
по конец включительно. Если заданы оба параметра <Beg>
и <Num>
, поиск осуществляется с элемента с индексом <Beg>
в <Num>
элементах массива. Для строковых значений поиск осуществляется без учета регистра. Функция возвращает индекс найденного элемента массива или ноль, если элемент не найден.
Пример:
Defarr a[10]; a[1]=5; a[2]=1; a[3]=”qqq”; a[4]=7; a[5]=”www”; a[6]=3; a[7]=4; a[8]=6; a[9]=7; a[10]=8; =findinarray(a,7); 4 =findinarray(a,7,3); 4 =findinarray(a,”www”); 5 =findinarray(a,”wWW”); 5 =findinarray(a,7,5,6); 9 =findinarray(a,7,5,4); 0
Если массив двухмерный, то возвращается приведенный индекс найденного элемента.
Пример:
defarr ar[m,n];
Приведенный индекс такой:
1 – ar[1,1]
2 – ar[1,2]
n – ar[1,n]
n+1 – ar[2,1]
n+2 – ar[2,2]