Даны текстовый файл и некоторое слово. напечатайте те строки файла, которые содержат данное слово. можете подробно рассказать о механизме поиска. только не надо интернета, это все не то. большое ))
Механизмы поиска могут быть различными. Конкретный механизм зависит от различных факторов, таких как, количество планируемых поисков, объем текстового файла, условия поиска и т.д. 1. Однократный поиск в соответствии с условиями задачи. В этом случае нет смысла в использовании сложных алгоритмов и/или предварительной подготовке файла. Чем сложнее алгоритм, тем больше будут затраты труда и времени на написание и отладку программы. Наилучшее решение - последовательный просмотр строк файла с поиском первого вхождения в строку заданного контекста. Большинство языков программирования имеет встроенную функцию или процедуру поиска подстроки в строке, например Pos() в языке Паскаль, поэтому задача сводится к единственному циклу "Повторять пока не встретился конец файла: читать строку, искать в строке контекст и что-то с ним сделать". 2. Многократный поиск в файле различных контекстов. Здесь используются специально разработанные методы, основанные на предшествующем построении дополнительных структур, таких, как индексы, деревья поиска и т.д. Их общий смысл в том, что для поиска сначала просматриваются эти вс структуры (которые, к тому же, упорядочены для ускорения поиска) и зачастую к самому файлу можно вообще не обращаться. Для понимания аналогии можно вспомнить поиск нужного слова в словаре. Сначала мы выбираем первую букву, затем ищем страничку, которая содержит слова, между которыми находится наше искомое, а потом просматриваем найденную страницу.
Существует множество алгоритмов поиска, самый легкий, но самый долгий - брут-форс. Полное перебирание всех символов строки. Например, есть строка 99 Bottles of beer on the wall и ищется подстрока (слово) the. Тогда идет полный перебор. Сравнивается первый символ слова (t) и каждый символ строки. Если символы совпали, то сравнивается следующий символ строки и следующий символ слова (h) и так далее. Если все символы слова совпали, то в строке оно содержится. Брут-форс - самый неэффективный алгоритм, т. к. время его работы линейно зависит от длины строки.
1. Однократный поиск в соответствии с условиями задачи.
В этом случае нет смысла в использовании сложных алгоритмов и/или предварительной подготовке файла. Чем сложнее алгоритм, тем больше будут затраты труда и времени на написание и отладку программы. Наилучшее решение - последовательный просмотр строк файла с поиском первого вхождения в строку заданного контекста. Большинство языков программирования имеет встроенную функцию или процедуру поиска подстроки в строке, например Pos() в языке Паскаль, поэтому задача сводится к единственному циклу "Повторять пока не встретился конец файла: читать строку, искать в строке контекст и что-то с ним сделать".
2. Многократный поиск в файле различных контекстов.
Здесь используются специально разработанные методы, основанные на предшествующем построении дополнительных структур, таких, как индексы, деревья поиска и т.д. Их общий смысл в том, что для поиска сначала просматриваются эти вс структуры (которые, к тому же, упорядочены для ускорения поиска) и зачастую к самому файлу можно вообще не обращаться. Для понимания аналогии можно вспомнить поиск нужного слова в словаре. Сначала мы выбираем первую букву, затем ищем страничку, которая содержит слова, между которыми находится наше искомое, а потом просматриваем найденную страницу.
Например, есть строка 99 Bottles of beer on the wall и ищется подстрока (слово) the. Тогда идет полный перебор. Сравнивается первый символ слова (t) и каждый символ строки. Если символы совпали, то сравнивается следующий символ строки и следующий символ слова (h) и так далее. Если все символы слова совпали, то в строке оно содержится. Брут-форс - самый неэффективный алгоритм, т. к. время его работы линейно зависит от длины строки.