Конкурс: "Алгоритм Поиска"

Подводя итоги конкурса "Формула Февраль", я был обрадован вниманию читателей к данной теме. Кроме того, было решено продолжить это начинание, подготавливая вас к более серьезным задачам программирования.

Если у вас есть какие-либо интересные (и полезные) задачи, связанные с программированием (и не только), то присылайте их в редакцию для Вадима Нарейко, и я с удовольствием рассмотрю все ваши предложения.

И, наконец, самое приятное: начиная с этого номера, победителю будет присуждаться компакт в качестве приза. Если у вас есть какие-либо пожелания, что бы Вы хотели видеть на призовом компакте, то пишите об этом вместе с решением задачи.

Задачей данного номера будет создание алгоритма, осуществляющего поиск по текстовому файлу. В рамках задачи выполняются следующие соглашения:

  • Текстовой строкой будем считать строку, состоящую из символов ASCII 32(20h)-255(ffh). Длина строки может быть равна 0 (нулю) и не ограничена (может быть любой длины).
  • Подстрокой будем считать часть строки. Подстрока длины 0 (нуль) является частью самой себя и любой строки.
  • Текстовым файлом будем считать файл, состоящий из текстовых строк, разделенных символами перевода строки.
 

Требуется составить алгоритм поиска строк, содержащих определенные подстроки в текстовом файле и написать программу для данного алгоритма.

На вход алгоритма/программы идут два текстовых файла IN1.TXT и IN2.TXT. IN1.TXT содержит строки для поиска. IN2.TXT содержит текст, по которому нужно вести поиск. В качестве результата работы должен создаваться файл OUT.TXT, содержащий число строк файла IN2.TXT, в которых была найдена соответствующая подстрока из файла IN1.TXT.


Пример:

IN1.TXT

a

bc

c

bb

IN2.TXT

abba

caba

bca

bbb

OUT.TXT

3

1

2

2

То есть строка "а" была найдена в трех строках, "bc" - в одной, "c" - в двух и "bb" - в двух.

Присылайте письма с описанием алгоритма и текстом программы на адрес редакции до 28 июня с пометкой "Алгоритм Поиска".

Вадим НАРЕЙКО,
ghost@belcaf.minsk.by,
www.belcaf.com

Версия для печатиВерсия для печати

Номер: 

24 за 1999 год

Рубрика: 

Азбука программирования
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!