Функция ArrayBsearch

 

Добрый день.

Хочу сделать выборку из числового массива с заданным разбросом в пунктах.

В документации озвучено "Если элемент с указанным значением в массиве отсутствует, функция вернет индекс ближайшего элемента (по значению)". Казалось бы все замечательно, но возвращает только при точном совпадении или максимальный элемент массива в режиме MODE_ASCEND и манимальный в режиме MODE_DESCEND.

Я что-то не понимаю или все так и должно быть?

 

Мы уже поправили документацию к MetaEditor (Если элемент с указанным значением в массиве отсутствует, функция вернет индекс ближайшего меньшего по значению из элементов, между которыми расположено искомое значение.), которая идёт в инсталляционном пакете клиентского терминала. Почему-то на сайт не попало, хотя поправка внесена уже давно.

 
stringo >>:

Мы уже поправили документацию к MetaEditor (Если элемент с указанным значением в массиве отсутствует, функция вернет индекс ближайшего меньшего по значению из элементов, между которыми расположено искомое значение.), которая идёт в инсталляционном пакете клиентского терминала. Почему-то на сайт не попало, хотя поправка внесена уже давно.

Извините, а почему нельзя было сделать возврат типа FALSE или "-1"???? Ведь обычно так и работают функции поиска в остальных языках.

 

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

1) определить какой у меня наименьший элемент в массиве;

2) выполнить поиск и результат сравнить с элементом определенным ранее.

Если честно - мне не понятно почему все так запутано. Не кажется ли Вам что реализация функции поиска в массиве именно в таком виде будет приводить к ошибкам?

Другая проблема - MQL4 по идее должен быть наоборот ориентирован на работу с массивами, а функция поиска всего одна.... Это как-то собираются исправлять?

 
caspermax >>:

Извините, а почему нельзя было сделать возврат типа FALSE или "-1"???? Ведь обычно так и работают функции поиска в остальных языках.

Вообще-то бинарный поиск чаще всего предназначен для поиска интервалов, а не для четкого поиска индекса значения.

____________

Подозреваю, что Вам надо что-то другое, выкладывайте задачу.

 
TheXpert >>:

Вообще-то бинарный поиск чаще всего предназначен для поиска интервалов, а не для четкого поиска индекса значения.

Я уже выше написал - может стоить добавить еще пару функций для поиска значений?

 
caspermax >>:

Я уже выше написал - может стоить добавить еще пару функций для поиска значений?

Так добавьте, пишутся они элементарно.

 
TheXpert >>:

Так добавьте, пишутся они элементарно.

Понятно, вопросов больше нет. Мне просто жаль того времени, что было потрачено.

 
caspermax писал(а) >>

Добрый день.

Хочу сделать выборку из числового массива с заданным разбросом в пунктах.

В документации озвучено "Если элемент с указанным значением в массиве отсутствует, функция вернет индекс ближайшего элемента (по значению)". Казалось бы все замечательно, но возвращает только при точном совпадении или максимальный элемент массива в режиме MODE_ASCEND и манимальный в режиме MODE_DESCEND.

Я что-то не понимаю или все так и должно быть?

Была тая проблема. Вышел из положения так... Организовал ещё один массив равный модулю разницы между элементом массива и искомым числом. Нашёл в новом массиве наименьшее. Забрал индекс массива и "снял" значение в старом массиве, согласно индексу. Может Вам поможет.... :)

Причина обращения: