Функции работы с массивами

Материал из GEOS_WIKI
Перейти к: навигация, поиск

В данном разделе собраны функции работы с массивами. О создании массивов см. раздел Переменные и выражения.

Инициализация и копирование массивов — 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]