INDEX - поиск элемента

Назначение.
Функциональный блок INDEX осуществляет поиск в упорядоченном по возрастанию массиве вещественных чисел и возвращает увеличенный на единицу индекс последнего элемента, значение которого меньше входного параметра X.
Состав структурной переменной.
Переменная со структурным типом INDEX будет добавлена в локальный словарь автоматически при добавлении блока в редактор.

Описание алгоритма.
-
На вход VX передается ссылка на упорядоченный массив вещественных чисел (тип данных REAL).
-
На вход VX_SIZE передается количество начальных элементов массива, среди которых будет осуществляться поиск. Значение VX_SIZE должно быть больше 2 и меньше или равно длине массива VX. Например, при длине массива 10 элементов и VX_SIZE=7, поиск будет осуществляться среди первых 7 элементов.
-
Если входное значение X меньше или равно первому элементу массива, выход INDEX = 1.
-
Если входное значение X больше или равно последнему элементу массива, выход INDEX = размеру массива.
-
Если входное значение X больше первого элемента и меньше последнего, осуществляется его последовательное сравнение с каждым элементом упорядоченного массива.
-
Выполнение блока остановится, когда будет найден последний элемент, значение которого меньше X, а индекс найденного элемента увеличивается на единицу и передается на выход INDEX.
Например:
-
массив VX=[5, 25, 100, 750, 1000], VX_SIZE = 5, X = 30. Выход INDEX = 2, так как число 25 последнее, которое превышает число 30;
-
массив VX=[5, 25, 100, 750, 1000], VX_SIZE = 5, X = 999. Выход INDEX = 4, так как число 750 последнее, которое превышает число 999;
-
массив VX=[5, 25, 100, 750, 1000], VX_SIZE = 5, X = 1. Выход INDEX = 1, так как X меньше значения первого элемента VX[0];
-
массив VX=[5, 25, 100, 750, 1000], VX_SIZE = 5, X = 2500. Выход INDEX = 5, так как X больше значения последнего элемента VX[4].
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.INDEX(X, VX, VX_SIZE);
//чтение выходных параметров
index_var := Block.INDEX;
FAULT := Block.FAULT;
|
Список возможных ошибок на выходе FAULT.
|
