logo.aleks Versus Поиск по сайту:
  Главная | Регистрация | Вход   Приветствую Вас Гость | RSS
Майнпаги
тыц
Стихи.РУ
Проза.РУ
Aleks Versus на LI
Я на Самиздате
читательский дневник
На Книготопии

easy.math.qsp v 2.3.0

 ←   → 

Операции над массивами

#array.rand#

 ↑ Наверх 

Генерирует случайные числа и заполняет ими указанный массив.

$args[0]- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
 args[1] - количество формируемых элементов, обязательный параметр
 args[2] - номер элемента, с которого необходимо начать.
 args[3] - нижняя граница случайного числа (по умолчанию - ноль)
 args[4] - верхняя граница случайного числа (по умолчанию - тысяча)

Результат работы функции:

gs '#array.rand#','mass',8

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272

gs '#array.rand#','mass',6,2

mass[0]=0
mass[1]=0
mass[2]=174
mass[3]=371
mass[4]=69
mass[5]=732
mass[6]=334
mass[7]=950

gs '#array.rand#','mass',6,2,10,20

mass[0]=0
mass[1]=0
mass[2]=12
mass[3]=19
mass[4]=19
mass[5]=13
mass[6]=10
mass[7]=17

#array.strt#

 ↑ Наверх 

Заполняет массив порядковыми числами

$args[0]- название массива, элементы которого необходимо сформировать (исследуемый массив), обязательный параметр
 args[1] - количество формируемых элементов, обязательный параметр
 args[2] - верхняя граница чисел. До какого числа вести заполнение.
 args[3] - нижняя граница чисел. С какого числа начинать заполнение.
 args[4] - с какого элемента начинать заполнение.

Результат работы функции:

gosub '#array.strt#','a',8

a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7

gosub '#array.strt#','a',8,4

a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=0
a[6]=1
a[7]=2

gosub '#array.strt#','a',8,0,2

a[0]=2
a[1]=1
a[2]=0
a[3]=2
a[4]=1
a[5]=0
a[6]=2
a[7]=1

gosub '#array.strt#','a',8,5,3,2

a[0]=0
a[1]=0
a[2]=3
a[3]=4
a[4]=5
a[5]=3
a[6]=4
a[7]=5

#array.prnt#

 ↑ Наверх 

Иногда необходимо просмотреть содержимое массива, или записать его в удобном виде в переменную. Для этого приходится вводить цикличиские конструкции непосредственно в код. Данная функция предназначена для того, чтобы избавить Вас от необходимости строить такие конструкции каждый раз. Достаточно указать аргументом имя массива и функция вернёт в результате столбец со значениями массива.

$args[0]- имя массива, содержимое которого необходимо просмотреть.
$args[1] - управляющая конструкция. Можно использовать три команды в любых комбинациях:

  • [only result] - выводит только содержимое массива, не показывая его названия и номера ячеек.
  • [trim] - отсекает прилегающие пробелы и символы табуляции при выводе значения элемента массива.
  • [not last] - исключает добавление разделителя за последним выводимым значением.

$args[2] - этим параметром задаётся разделитель между выводимыми значениями. По умолчанию, т.е. когда параметр не указан или равен пустому значению, между выводимыми значениями вставляется символ перевода строки.
 args[3] - начало вывода. Номер элемента, с которого начинается вывод значений (включительно).
 args[4] - окончание вывода. Номер элемента, до которого следует продолжать вывод значений (включительно).

Примеры вызова функции:

*pl $func('#array.prnt#','mass')
      - выведет на экран числовые значения массива 'mass'
*pl $func('#array.prnt#','$mass')
      - выведет на экран текстовые значения массива '$mass'
*pl $func('#array.prnt#','$mass','[only Result]')
      - выведет на экран только содержимое массива '$mass'

Результаты вызова функции:

Заготовленный массив:

$a[]='нулевая ячейка'
$a[]='   первая ячейка   '
$a[]=' вторая ячейка'
$a[]=''
$a[]='четвёртая ячейка'
$a[]='   пятая ячейка'
$a[]=''
$a[]='седьмая ячейка'

Вывод массива:

$func('#array.prnt#','$a')=
"$a[0]=нулевая ячейка
$a[1]=   первая ячейка   
$a[2]=&NBsp;&NBsp;вторая ячейка
$a[3]=
$a[4]=четвёртая ячейка
$a[5]=   пятая ячейка
$a[6]=
$a[7]=седьмая ячейка
"

Выводим исключительно значения массива:

$func('#array.prnt#','$a','[only result]')=
"нулевая ячейка
   первая ячейка   
    вторая ячейка
четвёртая ячейка
   пятая ячейка
седьмая ячейка
"

Выводим значения массива с отсечением прилегающих пробелов в каждом значении:

$func('#array.prnt#','$a','[trim]')=
"$a[0]=нулевая ячейка
$a[1]=первая ячейка
$a[2]=вторая ячейка
$a[3]=
$a[4]=четвёртая ячейка
$a[5]=пятая ячейка
$a[6]=
$a[7]=седьмая ячейка
"

Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту:

$func('#array.prnt#','$a','[trim] [only result]','|',2,5)=
"вторая ячейка||четвёртая ячейка|пятая ячейка|"

Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту; последний разделитель опускаем:

$func('#array.prnt#','$a','[trim] [only result] [not last]','|',2,5)=
"вторая ячейка||четвёртая ячейка|пятая ячейка"

#array.prnt.few#

 ↑ Наверх 

Данная функция позволяет выводить на экран содержимое сразу нескольких массивов, для сравнения например.

По умолчанию функция выводит содержимое всех массивов в виде таблицы, однако вывод таблицей можно отключить, использовав в последнем аргументе управляющую конструкцию [no table]. Последним аргументом может быть как имя массива так и управляющая конструкция. Функция считает управляющей конструкцией всякую строку в последнем аргументе, в которой между непробельными символами находится пробельный (или другой недопустимый знак). Прилегающие пробелы в остальных аргументах уничтожаются, поэтому вы можете записать имя массива в аргументе скажем так " $mass " (апострофы по правилам QSP для записи текстовых значений). Если же вы допустите в имени массива ошибку, функция известит вас об этом.

$args[0 ... 8]- имена массивов, содержимое которых необходимо просмотреть.
$args[8 ... 1] - управляющая конструкция. Записывается последним аргументом. Можно использовать следующие конструкции в любых комбинациях:

  • [only result] - выводит только содержимое массивов, не показывая их названий и номеров ячеек. Таблица при этом на экран выводиться не будет.
  • [no table] - выводит массивы на экран, но не облекает их в таблицу.
Результаты вызова функции:

Заготовленные массивы:

$a[]='нулевая ячейка'
$a[]='   первая ячейка   '
$a[]=' вторая ячейка'
$a[]=''
$a[]='четвёртая ячейка'
$a[]='   пятая ячейка'
$a[]=''
$a[]='седьмая ячейка'

$b[]='нулевая ячейка'
$b[]='   первая ячейка   '
$b[]=' вторая ячейка'
$b[]='3'
$b[]='4'
$b[]='   пятая ячейка'
$b[]='6'
$b[]='7'

Вывод двух массивов:

$func('#array.prnt.few#','$a','$b')=
"
#$a$b
0нулевая ячейканулевая ячейка
1   первая ячейка      первая ячейка   
2    вторая ячейка  вторая ячейка
3 3
4четвёртая ячейка4
5   пятая ячейка   пятая ячейка
6 6
7седьмая ячейка7
"

Вывод двух массивов, только значения:

$func('#array.prnt.few#','$a','$b','[only result]')=
"нулевая ячейка нулевая ячейка  
   первая ячейка       первая ячейка   
    вторая ячейка       вторая ячейка   
    3   
четвёртая ячейка    4   
   пятая ячейка    пятая ячейка
    6   
седьмая ячейка  7   "

Вывод двух массивов, без таблицы:

$func('#array.prnt.few#','$a','$b','[no table]')=
"$a[0]=нулевая ячейка   $b[0]=нулевая ячейка   
$a[1]=   первая ячейка      $b[1]=   первая ячейка      
$a[2]=  вторая ячейка   $b[2]=  вторая ячейка   
$a[3]=  $b[3]=3 
$a[4]=четвёртая ячейка  $b[4]=4
$a[5]=   пятая ячейка   $b[5]=   пятая ячейка   
$a[6]=  $b[6]=6 
$a[7]=седьмая ячейка    $b[7]=7 "

Вывод двух пустых массивов:

$func('#array.prnt.few#','$с','$в')=
"All your massives are empty."

Ошибочное написание имени массива:

$func('#array.prnt.few#','$a','$b','[no table]','$f')=
"Error: array's name is not correct. args pos:2"

#array.sort#

 ↑ Наверх 

Программа сортирует значения массива (используется метод сортировки "пузырьком"). Результатом работы программы могут быть три разных массива. Направление сортировки: от нулевого элемента к последнему.

$args[0] - название массива, элементы которого необходимо отсортировать (исследуемый массив), обязательный параметр
$args[1] - порядок сортировки элементов массива: 'up' или ничего - значения сортируются от большего к меньшему, 'down' - значения сортируются от меньшего к большему.
$args[2] - имя массива, в который будут помещены исходные номера элементов исследуемого массива в порядке сортировки. Например, если при сортировке местами поменялись первый и второй элемент, первый элемент указанного массива получит номер 2, а второй - 1.
$args[3] - название массива результатов, т.е. массива, в который будут переданы результаты сортировки. Если не указано, массивом результатов становится исследуемый.

Результат работы функции:
Простая сортировка. Результат записывается в исходный массив.

gs '#array.rand#','old_mass',8   (0) Генерируем массив случайных чисел
gs '#array.sort#','old_mass'   (1) Сортируем полученный массив

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=157
old_mass[1]=250
old_mass[2]=709
old_mass[3]=413
old_mass[4]=532
old_mass[5]=779
old_mass[6]=730
old_mass[7]=565
old_mass[0]=779
old_mass[1]=730
old_mass[2]=709
old_mass[3]=565
old_mass[4]=532
old_mass[5]=413
old_mass[6]=250
old_mass[7]=157
не указано в параметрах не указано в параметрах

Обратная сортировка с получением позиций. Результат записывается в исходный массив.

gs '#array.rand#','old_mass',8   (0) Генерируем массив случайных чисел
gs '#array.sort#','old_mass','down','em_array'   (1) Сортируем полученный массив вниз

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=966
old_mass[1]=812
old_mass[2]=796
old_mass[3]=304
old_mass[4]=678
old_mass[5]=118
old_mass[6]=901
old_mass[7]=132
old_mass[0]=118
old_mass[1]=132
old_mass[2]=304
old_mass[3]=678
old_mass[4]=796
old_mass[5]=812
old_mass[6]=901
old_mass[7]=966
em_array[0]=5
em_array[1]=7
em_array[2]=3
em_array[3]=4
em_array[4]=2
em_array[5]=1
em_array[6]=6
em_array[7]=0
не указано в параметрах

Обратная сортировка с получением позиций. Результат записывается в новый массив.

gs '#array.rand#','old_mass',8   (0) Генерируем массив случайных чисел
gs '#array.sort#','old_mass','down','em_array','new_mass'   (1) Сортируем полученный массив вниз

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
(0) (1) em_array new_mass
old_mass[0]=967
old_mass[1]=629
old_mass[2]=541
old_mass[3]=290
old_mass[4]=852
old_mass[5]=334
old_mass[6]=318
old_mass[7]=529
old_mass[0]=967
old_mass[1]=629
old_mass[2]=541
old_mass[3]=290
old_mass[4]=852
old_mass[5]=334
old_mass[6]=318
old_mass[7]=529
em_array[0]=3
em_array[1]=6
em_array[2]=5
em_array[3]=7
em_array[4]=2
em_array[5]=1
em_array[6]=4
em_array[7]=0
new_mass[0]=290
new_mass[1]=318
new_mass[2]=334
new_mass[3]=529
new_mass[4]=541
new_mass[5]=629
new_mass[6]=852
new_mass[7]=967

Простая сортировка текстовых значений с получением позиций. Результат записывается в исходный массив.

gs '#array.sort#','old_mass','down','em_array'   (0) Сортировка текстовых значений массива

Исследуемый массив до сортировки Исследуемый массив после сортировки Изменение в позициях элементов массива Массив результатов
$old_mass (0) em_array new_mass
$old_mass[0]=88ff88
$old_mass[1]=ff00ff
$old_mass[2]=0ff0f8
$old_mass[3]=ffffff
$old_mass[4]=8888ff
$old_mass[5]=fff8f8
$old_mass[0]=0ff0f8
$old_mass[1]=8888ff
$old_mass[2]=88ff88
$old_mass[3]=ff00ff
$old_mass[4]=fff8f8
$old_mass[5]=ffffff
em_array[0]=2
em_array[1]=4
em_array[2]=0
em_array[3]=1
em_array[4]=5
em_array[5]=3
параметр не задан

Наверное необходимо пояснить смысл столбца "Изменения в позициях элементов", прежде чем переходить к следующей функции. Покажу на примере предпоследней таблицы.

В массиве old_mass число 967 было в нулевой позиции (было значением нулевого элемента). После сортировки оно было помещено в седьмую позицию, поэтому в массиве em_array в седьмую позицию добавлен номер старой позиции элемента со значением 967.

Далее число 629, которое в массиве old_mass было в первой позиции, переместилось в пятую позицию массива результатов (new_mass). Поэтому в массиве em_array в пятую позицию был добавлен номер 1.
Для чего это нужно. Используя массив результатов и массив фиксации позиций (em_array) можно вернуть исходное состоние массива, или изменить другие массивы соответственно массиву результатов.

#array.rstd#

 ↑ Наверх 

Процедура перетасовывает элементы массива согласно сведениям в массиве фиксации.

$args[0]- массив, данные в котором необходимо перетасовать (исследуемый)
$args[1] - массив фиксации, где находится список, согласно которому тасуются элементы
$args[2] - массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.

Результат работы функции:

gs '#array.rand#','old_mass',8    (0) Генерируем значения опорного массива (для примера)
gs '#array.sort#','old_mass','down','em_array'    (1) Сортировка значений в опорном массиве
gs '#array.rstd#','$arr_mass','em_array','new_mass'    (2) Перетасовка значений из исходного массива в соответствии с данными из массива фиксации позиций

Исследуемый массив до сортировки Опорный массив до сортировки Опорный массив после сортировки Массив фиксации позиций Массив результатов
$arr_mass (0) (1) em_array (2)
$arr_mass[0]=голова
$arr_mass[1]=плечи
$arr_mass[2]=грудь
$arr_mass[3]=живот
$arr_mass[4]=бёдра
$arr_mass[5]=колени
$arr_mass[6]=икры
$arr_mass[7]=ступни
old_mass[0]=722
old_mass[1]=136
old_mass[2]=788
old_mass[3]=177
old_mass[4]=780
old_mass[5]=97
old_mass[6]=649
old_mass[7]=75
old_mass[0]=75
old_mass[1]=97
old_mass[2]=136
old_mass[3]=177
old_mass[4]=649
old_mass[5]=722
old_mass[6]=780
old_mass[7]=788
em_array[0]=7
em_array[1]=5
em_array[2]=1
em_array[3]=3
em_array[4]=6
em_array[5]=0
em_array[6]=4
em_array[7]=2
$new_mass[0]=ступни
$new_mass[1]=колени
$new_mass[2]=плечи
$new_mass[3]=живот
$new_mass[4]=икры
$new_mass[5]=голова
$new_mass[6]=бёдра
$new_mass[7]=грудь

#array.dsrt#

 ↑ Наверх 

Процедура, восстанавливающая состояние массива до сортировки по значениям в массиве фиксации.

$args[0]- массив, данные в котором необходимо восстановить (исследуемый)
$args[1] - массив фиксации, где находится список, согласно которому тасуются элементы
$args[2] - массив результатов - сюда помещается итог перетасовки, если не указан результат помещается в исходный массив.

Результат работы функции:

gs '#array.rand#','old_mass',8    (0) Генерируем случайный массив
gs '#array.sort#','old_mass','down','em_array'    (1) Сортируем значения в массиве
gs '#array.dsrt#','old_mass','em_array','new_mass'    (2) Восстановление массива к исходному состоянию


Исследуемый массив до сортировки Исследуемый массив после сортировки Массив фиксации позиций Массив результатов
(0) (1) em_array (2)
old_mass[0]=949
old_mass[1]=913
old_mass[2]=269
old_mass[3]=901
old_mass[4]=257
old_mass[5]=561
old_mass[6]=529
old_mass[7]=293
old_mass[0]=257
old_mass[1]=269
old_mass[2]=293
old_mass[3]=529
old_mass[4]=561
old_mass[5]=901
old_mass[6]=913
old_mass[7]=949
em_array[0]=4
em_array[1]=2
em_array[2]=7
em_array[3]=6
em_array[4]=5
em_array[5]=3
em_array[6]=1
em_array[7]=0
new_mass[0]=949
new_mass[1]=913
new_mass[2]=269
new_mass[3]=901
new_mass[4]=257
new_mass[5]=561
new_mass[6]=529
new_mass[7]=293

#array.simp#

 ↑ Наверх 

Процедура сравнения содержимого двух массивов.

$args[0]- первый массив (исследуемый).
$args[1] - второй массив (исследуемый).
$args[2] - управляющая конструкция.

  • Если указано пустое значение - массивы сравниваются на предмет полной идентичности.
  • Если указано "simp" - массивы сортируются по одинаковым правилам и вновь сравниваются. Такое сравнение называется сравнением на подобие, т.е. в обоих массивах присутствуют одинаковые элементы, но расположенные в разном порядке. Сортировка производится во временные массивы и на исследуемые массивы не влияет.
  • Если указано "conc" массивы сравниваются на совпадение хотя бы одного элемента.
  • Если при сравнении необходимо исключить пустые ячейки, необходимо добавить ключ "/se" к управляющей конструкции.
Результат работы функции:

 $result - принимает два значения:

  • "true" - массивы идентичны, подобны, либо в них есть совпадающие элементы (в зависимости от условий сравнения)
  • "false" - сравнение показало, что массивы не идентичны, не подобны, или не имеют совпадающих элементов (в зависимости от условий сравнения)

gs '#array.rand#','mass1',8    (0) Генерируем случайный массив
copyarr 'mass2','mass1'    (1) Создаём точную копию массива
gs '#array.sort#','mass1','','','mass3'    (2) Сортируем значения и помещаем их в новый массив
$func('#array.simp#','mass1','mass2')    (3) Сравниваем на идентичность идентичные массивы
$func('#array.simp#','mass1','mass3')    (4) Сравниваем на идентичность подобные массивы
$func('#array.simp#','mass1','mass3','simp')    (5) Сравниваем на подобие подобные массивы


Исследуемый массив Полностью идентичный массив Массив с тем же набором элементов, но отсортированный результат абсолютного сравнения mass1 и mass2 результат абсолютного сравнения mass1 и mass3 результат сравнения на подобие mass1 и mass3
(0) (1) (2) (3) (4) (5)
mass1[0]=455
mass1[1]=705
mass1[2]=967
mass1[3]=452
mass1[4]=829
mass1[5]=84
mass1[6]=983
mass1[7]=824
mass2[0]=455
mass2[1]=705
mass2[2]=967
mass2[3]=452
mass2[4]=829
mass2[5]=84
mass2[6]=983
mass2[7]=824
mass3[0]=983
mass3[1]=967
mass3[2]=829
mass3[3]=824
mass3[4]=705
mass3[5]=455
mass3[6]=452
mass3[7]=84
true false true

Сравнение текстовых значений массивов происходит аналогично. Если хотя бы у одного из массивов будет стоять выбор по текстовым значениям (т.е. имя массива будет начинаться с $), будут сравниваться текстовые значения.

#array.srch#

 ↑ Наверх 

Функция производит поиск максимального или минимального значения в массиве. В отличие от функций MAX и MIN можно указать область и пределы поиска, а так же запросить позицию найденного элемента. Если ни одно число по указанным параметрам не подходит, функция возвращает слово false.

$args[0] - название массива.
$args[1] - режим: max - поиск максимального значения (по умолчанию), min - поиск минимального значения.
$args[2] - нижний предел числа (по умолчанию минимальное число в массиве). Внимание! Для определения границы используются текстовые значения.
$args[3] - верхний предел числа (по умолчанию максимальное число в массиве). Внимание! Для определения границы используются текстовые значения.
 args[4] - от какого элемента вести поиск (по умолчанию от нулевого).
 args[5] - до какого элемента вести поиск (по умолчанию до последнего).
$args[6] - управление. Если указано "pos", в результат будет возвращена позиция элемента, в противном случае - значение.

Результат работы функции:

Результат работы функции всегда возвращается в текстовом виде.

Заготовленный массив:

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=478
mass[5]=205
mass[6]=701
mass[7]=272

Поиск максимального значения:

$func('#array.srch#','mass','max')="765"

Поиск максимального значения в указанной области:

$func('#array.srch#','mass','max','','',0,2)="668"

Поиск минимального значения в заданных пределах:

$func('#array.srch#','mass','min','400','600')="413"

Поиск минимального значения в заданных пределах и в указанной области:

$func('#array.srch#','mass','min','400','600',3,6)="478"

Поиск минимального значения в заданных пределах и в указанной области с получением позиции элемента:

$func('#array.srch#','mass','min','400','600',3,6,'pos')="4"

Поиск невозможного значения в заданных пределах и в указанной области:

$func('#array.srch#','mass','min','900','1000',3,6)="false"

#array.ins#

 ↑ Наверх 

Функция для вставки элемента в массив со сдвигом вправо.

$args[0] - название массива.
$args[1] - значение, которое хотим присвоить элементу.
$args[2] - индекс элемента, куда хотим поместить новое значение, можно строковый.

Результат работы функции:

Заготовленный массив:

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass['text']=478 & ! числовой индекс данного элемента: 4
mass[5]=205
mass[6]=701
mass[7]=272

Вставка по числовому или текстовому индексу:

gosub '#array.ins#','mass',6,4
gosub '#array.ins#','mass',6,'text'

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=6
mass[5]=478
mass[6]=205
mass[7]=701
mass[8]=272

#array.clr#

 ↑ Наверх 

Функция для удаления из массива всех элементов с указанным значением.

$args[0] - название массива.
$args[1] - значение, которое хотим удалить из массива.

Результат работы функции:

Заготовленный массив:

mass[0]=1
mass[1]=2
mass[2]=3
mass[3]=1
mass[4]=2
mass[5]=3
mass[6]=1
mass[7]=2

Удаляем все двойки:

gosub '#array.clr#','mass',2

mass[0]=1
mass[1]=3
mass[2]=1
mass[3]=3
mass[4]=1




 ←   → 
  Aleks Versus'Easy Libraries'2013-2015
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2015


 
Copyright MyCorp © 2018
Конструктор сайтов - uCoz
aleksversus@mail.ru
lex666endless@rambler.ru
437337904
Наверх