Лабораторная 4. Поиск в массивах

  1. Дан двумерный динамический целочисленный массив A. Используя универсальную функцию линейного поиска SearchLineDyn (см.лекции), найти все строки массива A, которые содержат только положительные значения. Вывести содержимое найденных строк на экран.

    Шаблон программы:

    // здесь - типы и функции поиска
    
    var a:array of array of integer;
        i,j:integer;
    const N=10;
    
    begin
     setLength(a,N);
    // создание элементов массива
     for i:=0 to N-1 do begin
      setlength(a[i],N);
      for j:=0 to N-1 do a[i][j]:=random(10);
     end;
    
    // Вывод 
     for i:=0 to length(a)-1 do begin
      for j:=0 to length(a[i])-1 do write(a[i][j]:3);
      writeln;
     end;
     writeln;
    
     // здесь - поиск, например в следующем виде: found:=SearchLineDyn(TDataArray(a),@test);
    
     // здесь - обработка результатов поиска
    end.
    

  2. Используя материалы лекционных занятий, разработать универальную функцию бинарного поиска SearchBinDyn:
    type
     TestBinFunction=function(element:pointer):integer;
        // TestBinFunction возвращает 
        // 0 - если элемент соответствует критерию, 
        // отрицательное число - если меньше критерия, 
        // положительное число - если больше критерия
     TDataArray=array of pointer;
     TIndexArray=array of integer;
    
    function SearchBinDyn(const a:TDataArray; test:TestBinFunction):TIndexArray;
     begin
      ...
     end;
    
    Проверить работу SearchBinDyn на лекционных примерах, где демонстрировались возможности SearchLineDyn. Для корректности проверки примеров обеспечить заполнение исходных массивов заранее отсортированными данными.

  3. Даны число N и двумерный динамический целочисленный массив A, строки которого отсортированы по возрастанию количества элементов N в них (сначала идут строки, где элемент N отсутствует, затем - где присутствует один элемент N, затем - где два элемента N и т.д.). Используя универсальную функцию поиска SearchBinDyn, найти все строки массива A, которые содержат 2 значения N. Вывести содержимое найденных строк на экран.