Вариант 1
Разработать программу бинарного поиска заданного целого ключа в упорядоченной таблице целых чисел:
[ 061, 087, 154, 170, 275, 426, 503, 509, 512, 612, 653, 677, 703, 897, 908]
Программа должна отображать изменение диапазона поиска в таблице, обозначая его границы символами [ ], и индицировать позицию ключа сравнения диапазона с помощью символов ^^^. Иллюстрация поиска должна отображаться через поток стандартной диагностики, а результат поиска должен осуществляться через аргументы командной строки вызова программы, либо интерактивного вызова через поток стандартного ввода.

Вариант 2
Разработать программу однородного бинарного поиска заданного целого ключа в упорядоченной таблице целых чисел:
[0, 52, 083, 151, 171, 269, 327, 508, 510, 515, 613, 649, 673, 705, 891, 910]
Программа должна отображать изменение диапазона поиска в таблице, обозначая его границы символами [ ], и индицировать позицию ключа сравнения диапазона с помощью символов ^^^. Иллюстрация поиска должна отображаться через поток стандартной диагностики, а результат поиска должен осуществляться через аргументы командной строки вызова программы, либо интерактивного вызова через поток стандартного ввода.

Вариант 3
Разработать программу проверки возможности регистрации пользователя с заданным регистрационным именем (например, geom, convey или OS ) в многопользовательском режиме функционирования OS Linux, установленной на Вашем компьютере. Для решения этой проблемы необходимо применить алгоритм простого последовательного поиска соответствующей регистрационной информации в файле /etc/passwd.
Искомое регистрационное имя должно передаваться программе через аргументы командной строки ее вызова. Для программной реализации поиска необходимо использовать библиотечные функции fopen, fclose, fgets, strncmp.

Вариант 4
Требуется разработать программу, которая по заданному сетевому имени компьютера (hostname) в локальной сети возвращает его IP-адрес. Для решения этой проблемы необходимо организовать последовательный просмотр файла /etc/hosts. Диагностическое сообщение по результатам поиска должно отображаться через поток стандартного вывода, а искомое сетевое имя должно передаваться программе через аргументы командной строки ее вызова.

Вариант 5
Разработать программу, которая должна определять: является ли заданный набор латинских букв подмножеством другого набора латинских букв. Для решения этой проблемы нужно применить библиотечные функции qsort и bsearch

Вариант 6
Разработать программу, которая должна определять: является ли заданный набор латинских букв подмножеством другого заданного набора латинских букв. Для решения этой проблемы нужно применить бинарный поиск и осуществить сортировку второго множества с помощью библиотечной функции qsort.

Вариант 7
Разработать программу, которая должна определять: является ли заданный набор латинских букв подмножеством другого заданного набора латинских букв. Для решения этой проблемы нужно осуществить сортировку двух множеств с помощью функции qsort, а затем осуществить бинарный поиск.

Вариант 8
Разработать программу, которая по заданным числовым значениям RGB-компонент цветовых ресурсов восстанавливает символьное название цвета путем последовательного просмотра базы данных цветов операционной среды X Window System. База данных цветов X Window System сосредоточена в файле /usr/X11/lib/X11/rgb.txt; каждая информативная строка этого файла содержит тройку значений интенсивности RGB составляющих видеосигнала в десятичной системе счисления и символическое имя соответствующего цвета. Исходные значения RGB-компонент должны быть заданы в системе счисления по основанию 16 и передаваться программе через аргументы командной строки ее вызова. Результат поиска должен отображаться через поток стандартного вывода.

Вариант 9
В некоторой файловой системе справочник файлов организован в виде упорядоченного двоичного дерева. Каждой вершине соответствует некоторый файл, здесь содержится имя файла и, кроме всего прочего, дата последнего обращения к нему, закодированная целым числом. Напишите программу, которая обходит дерево и удаляет все файлы, последнее обращение к которым происходило до некоторой определенной даты.

Вариант 10
Разработайте программу, которая при заданном значении N создает последовательность N макроинструкций, проиндексированных от 0 до N-1, в форме compare(l,h), где i-ая инструкция в списке означает «сравнить ключ поиска со значением индекса i в таблице; затем сообщить о попадании при поиске, если они равны, выполнить l-ую инструкцию, если он меньше, и h-ую инструкцию, если он больше» (индекс 0 зарезервируйте на случай промаха при поиске). Необходимо, чтобы последовательность обладала тем свойством, что для любого поиска должно выполняться столько же операций сравнения, как и при бинарном поиске в этом же наборе данных.

Вариант 11
Создайте программу, реализующую дерево бинарного поиска (это бинарное дерево, с каждым из внутренних узлов которого связан ключ, причем ключ в любом узле больше (или равен) ключам и во всех узлах левого поддерева этого узла и меньше (или равен) ключам во всех узлах правого поддерева этого узла). Выполните реализацию бинарного дерева поиска таким образом, чтобы в программе для хранения элементов с дублированными ключами были предусмотрены связные списки, размещенные в узлах дерева. Измените интерфейс так, чтобы операция search работала подобно операции sort (для всех элементов с ключом поиска).

Вариант 12
Создайте программу, в которой определено бинарное дерево поиска concordTree, в котором хранятся объекты класса Word. После открытия текстового файла concord.txt оператор ввода потока считывает слова, пока не встретится конец файла. Каждое слово либо включается в дерево, либо используется для обновления информации о себе, если оно уже встречалось ранее. После того как все слова обработаны, выполняется симметричное прохождение, в процессе которого слова распечатываются в алфавитном порядке.

Вариант 13
Создайте программу, в которой определено бинарное дерево поиска concordTree, в котором хранятся объекты класса Word. После открытия текстового файла concord.txt оператор ввода потока считывает слова, пока не встретится конец файла. Каждое слово либо включается в дерево, либо используется для обновления информации о себе, если оно уже встречалось ранее. После того как все слова обработаны, число встреч каждого слова в каждой строке должно распечатываться в следующем формате:
Номер строки (число встреч)
Например,
<Вход> one two one two three
<Выход> one………………..2: 1(2)
three…..………………1: 1(1)
two….…………………2: 1(2)

Вариант 14
Создайте программу, в которой арифметическое выражение a-d/c*b+e*f/g представлено в виде бинарного дерева. Осуществив прохождение этого дерева, выведите префиксную, инфиксную и постфиксную формы данного арифметического выражения.

Вариант 15
Напишите программу, которая читает текстовый файл, осуществляя последовательный поиск знаков пунктуации (. , ! ?), и выводит на экран счетчик количества появлений знаков пунктуации.

Вариант 16
Напишите программу, которая генерирует М целых чисел и помещает их в массив, затем подсчитывает количество N целых чисел, которые совпадают с одним из чисел массива, используя последовательный поиск. Запустите программу при М=10, 20,50 и N=10,20,50.

Вариант 17
Напишите программу для решения задачи отыскания максимального из N элементов, сохраненных в массиве А[0],…,A[N-1]. В программе для поиска максимума примените алгоритм «разделяй и властвуй» на основе бинарного поиска.

Вариант 18
Пусть задан в виде последовательности некоторый текст и есть два списка из нескольких слов в виде двух массивов. Предположим слова – небольшие массивы символов, их размер невелик и фиксирован. Разработать программу, которая должна определять: является ли данное слово (массив) подмножеством другого заданного некоторым текстом. Для решения этой проблемы нужно осуществить сортировку двух множеств с помощью функции qsort, а затем осуществить бинарный поиск.