Страница 1 из 1
[Pascal] Поиск слова в файле.
Добавлено: 06 окт 2008, 11:54
Horita
Задача: Дан файл, с каким либо русским текстом, надо найти в этом файле слово, введеное пользователем. Потом это слово нужно выделить цветом, в исходном тексте.
Первоночально мой алгоритм был таким. Я думала сверять по буквам, дошла до нахождения 1 буквы и записывания оставшихся в остаток, 2 букву у меня упорно не находило.
А как зделать 2 часть задания я низнаю вобще, даже незнаю как цветом выделить.
Я посмотрела "Разбиение строки на слова" думаю это бы подошло, а как дальше низнаю

Re: [Pascal] Поиск слова в файле.
Добавлено: 06 окт 2008, 14:02
somewhere
Читайте про функцию POS, применять для каждой строки исходного текста. Если слово (подстрока) в строке файла найдено, то поиск для этой строки повторить с позиции после найденого слова.
Re: [Pascal] Поиск слова в файле.
Добавлено: 06 окт 2008, 16:43
Хыиуду
А что значит "выделить слово цветом в исходном тексте"? Вывести весь текст на экран, а это слово другим цветом, что ли?
Короче, примерно так:
Код: Выделить всё
в цикле считать строку
Разбивать на слова
Если очередное слово совпадает с заданным, то:
функцией textcolor меняем цвет шрифта
выводим слово
той же функцией меняем цвет обратно (вроде бы светло-серый - 11?)
Если же нет - просто выводим слово
Re: [Pascal] Поиск слова в файле.
Добавлено: 07 окт 2008, 11:08
Horita
Да, надо имено весь текст вывести и там выделить слово.
Re: [Pascal] Поиск слова в файле.
Добавлено: 08 окт 2008, 10:16
Horita
Эм, а не могли бы вы хоть какойто код выложить, я уже 5 день голову ломаю.
Re: [Pascal] Поиск слова в файле.
Добавлено: 08 окт 2008, 11:25
Serge_Bliznykov
Horita, тут основная сложность - " выделить цветом, в исходном тексте."
Приведите пример - КАК Вы отображаете исходный текст...
тогда можно будет чем-то Вам помочь..
вот, например, если текст менее 25 строк, то такой способ вывода устроит ? (это без выделения пока... ;-):
Код: Выделить всё
uses crt;
....
begin
ClrScr;
Assign(F,'source.txt');
Reset(F);
While Not Eof(f) do begin
Readln(F,s);
WriteLn(s)
end;
Close(F);
end.
Re: [Pascal] Поиск слова в файле.
Добавлено: 08 окт 2008, 14:55
Horita
Да, я таким и выводила. Размер файла не ограничен. Там может быть хоть целая книга. Даже может бы ть одно и тоже слово несколько раз, хотя это в задании не сказано.
Re: [Pascal] Поиск слова в файле.
Добавлено: 08 окт 2008, 15:04
Horita
Я вас не послушала и таки искала по буквам

Додумалась птомучто тока до этого. И почти все получилось, но чтобы считать слово 2 раза я его в файл засунула и теперь у меня выводит пустую строку.
Вот код.
Код: Выделить всё
PROGRAM seach_;
VAR
T, F: TEXT;
Sl, Ch1,Ch2, Ch3: CHAR;
Ch: STRING;
Counter, Counter2: INTEGER;
PROCEDURE search;
BEGIN
Ch1 := ' ';
Ch2 := 'Y';
WHILE (NOT EOF(T)) AND (Ch2 = 'Y')
DO
BEGIN
READ(T, Ch1);
IF (Ch1 = Sl)
THEN
BEGIN
Ch2 := 'N';
WRITE(Ch1);
Ch := Ch1;
END;
END;
END;
PROCEDURE Ost;
BEGIN
IF Sl <> ' '
THEN
BEGIN
READ(Sl);
END;
END;
BEGIN
ASSIGN(T, 'Text1.txt');
ASSIGN(F, 'File.txt');
RESET(T);
REWRITE(F);
Counter := 0;
Counter2 := 0;
WRITE('Введите слово: ');
WHILE NOT EOLN
DO
BEGIN
READ(Ch);
WRITE(F, Ch);
END;
RESET(F);
WHILE NOT EOLN
DO
BEGIN
READ(F, Ch3);
Counter := Counter + 1;
END;
WHILE NOT EOLN(F)
DO
BEGIN
READ(F, Sl);
WHILE Counter2 <> Counter
DO
BEGIN
Search;
ost;
Counter2 := Counter2 + 1;
END;
END;
END.
Низнаю где ошибка.
Впринцыпе, не хотела в файл слово вставлять, поэтому если скажите как можно здесь без файла обойтись то буду рада.