out Row: TArrayRl): boolean;

// Поиск ближайшего соответствия заданного значения X // и элемента с индексом Ind

// строки двумерного несортированного массива М

// Row - найденная строка, первый ее элемент - индекс строки

procedure FindNearS(const М: TArrayS2;
X: string;
Ind: integer;
out Row: TArraySl);
procedure FindNearl(const M: TArrayl2;
X, Ind: integer;
out Row: TArrayll);
procedure FindNearR(const M: TArrayR2;
X: real;
Ind: integer;
out Row: TArrayRl);

// Поиск заданного значения X в элементах с индексом Ind // строки двумерного несортированного массива М

// с линейной интерполяцией // Row - результирующая строка

// Если X > максимального или < минимального элемента, // то возвращается ближайшая строка

procedure InterpR(const М: TArrayR2;
X: real;
Ind: integer;
out Row: TArrayRl);

Функции поиска, прототипы которых вы можете видеть в интерфейсе модуля, делятся на две группы: поиск в сортированных массивах и поиск в несортированных массивах. Сортированный массив может быть получен любым из рассмотренных в разд. 1.1 методов, кроме методов построения индекса. Впрочем, вы, наверное, сами легко сможете построить аналоги приведенных функций для случая, когда для массива построен индекс.

Функции FindSSort, FindlSort, FindRSort (для сортированных массивов строк, целых и действительных чисел) и FindS, Findl, FindR (для несортированных массивов строк, целых и действительных чисел) ищут в двумерном массиве М строку, в которой элемент с индексом Ind имеет значение X. Если строка, в которой ее указанный элемент совпадает с заданным значение X, найдена, то функции возвращают true, а в динамический массив Row заносится найденная строка, начиная с Row[l]. В первый элемент массива Row[0] заносится индекс найденной строки. Если строка, в которой указанный элемент равен заданному значения X, не найден, то функция поиска возвращает false.

Для массивов строк сравнение с критерием X проводится без учета регистра. Например, строки "Цех 1" и "цех 1" считаются равными. Требуется не только совпадение символов искомого элемента и X, но и числа символов. Если, например, в критерии X после значащих символов записан пробел, а в элементе массива этого пробела нет, то значения элемента и X считаются разными.

Обращение к рассмотренным функциям может иметь, например, следующий вид:

var S: TArrayS2;
A: TArrayl2;
В: TArrayR2;
RowS: TArraySl;
Rowl: TArrayll;
RowR: TArrayRl;
XS: string;
XI:integer;
XR: real;
Ind: integer;

// Заполнение массивов и, если необходимо, их сортировка

// Задание индексов и критериев поиска

Ind : =

XS : =

XI : =

XR := ...;

// Обращение к функциям поиска в сортированных массивах // (если сортировка была проведена) if FindSSort(S, XS, Ind, RowS)

then ... // обработка массива RowS

else Application.MessageBox('Искомая строка не найдена1, 'Результат отрицательный1, МВ_0К+МВ_1CONEXCLAMATION);

if FindlSort(А, XI, Ind, Rowl)

then ... // обработка массива Rowl

else Application.MessageBox('Искомая строка не найдена1, 'Результат отрицательный', MB ОК+МВ ICONEXCLAMATION);

⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Май
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс