Funkcja int ArrayBsearch() szuka określonej wartości w pierwszym wymiarze tablicy i zwraca indeks tego elementu. Jeśli tablica nie zawiera szukanej wartości, zostanie zwrócony indeks innego elementu, wartość którego będzie mniejsza niż szukana i ten element będzie najbliżej do poszukiwanej wartości. Funkcja nie może być stosowana w tablicach typu string . Więcej informacji można znaleźć w specyfikacji MQL4.
Skrypt do wyświetlenia indeksu tego elementu tablicy, który jako pierwszy zawiera poszukiwaną wartość. Przeszukiwana jest cała tablica WHOLE_ARRAY , od elementu z indeksem 0, kierunek przeszukiwania rosnący MODE_ASCEND.
#property strict
void OnStart()
{
//---
int array[] = {-1, 1, 2, 4, 8, 4, 32, 64}; // tablica
int value = 4; // poszukiwana wartość
//--- zakres poszukiwań
int count = WHOLE_ARRAY; // cała tablica, wartość domyślna
int startPos = 0; // indeks elementu początkowego, wartość domyślna
//--- kierunek poszukiwania
int direction = MODE_ASCEND; // MODE_ASCEND - rosnąco, wartość domyślna
//--- znaleźć indeks elementu zgodnie z kryteriami poszukiwania
int result = ArrayBsearch(array, value, count, startPos, direction); // 3
//--- wyświetlić wynik
Print("Poszukiwanie rosnące: element z indeksem ",result,
" jako pierwszy zawiera poszukiwaną wartość = ",value);
}
Rys. 1. Przykład stosowania funkcji ArrayBsearch().
#property strict
void OnStart()
{
//---
double array[] = {-1.0, 1.5, 2.7, 4.0, 8.7, 4.4, 32.0}; // tablica
double value = 3.21; // poszukiwana wartość
//--- zakres poszukiwań
int count = WHOLE_ARRAY; // cała tablica
int startPos = 4; // indeks elementu początkowego
//--- kierunek poszukiwania
int direction = MODE_ASCEND; // MODE_ASCEND - rosnąco
//--- znaleźć indeks elementu zgodnie z kryteriami poszukiwania
int result = ArrayBsearch(array, value, count, startPos, direction); // 4
//--- wyświetlić wynik
Print("Poszukiwanie rosnące, od indeksu ",startPos,", cała tablica:",
" element z indeksem ",result,
" pasuje do kryteriów poszukiwania wartości ",value);
}
Rys. 2. Przykład stosowania funkcji ArrayBsearch().