Funkcje tablicowe:   ArrayBsearch()

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.


Przykład 1

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().


Przykład 2

#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().