Дамир1991 1 / 1 / 0 Регистрация: 19.10.2010 Сообщений: 51 |
||||
1 |
||||
Найти слово в файле23.06.2011, 09:44. Показов 3811. Ответов 3 Метки нет (Все метки)
дан текстовый фаил, вводим слово и ищем его в данном фаиле при нахождении записываем его в другой фаил
0 |
Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
23.06.2011, 09:50 |
2 |
И не поймешь, поскольку понятия не имеешь, что хочешь и что пишешь..
0 |
1 / 1 / 0 Регистрация: 19.10.2010 Сообщений: 51 |
|
23.06.2011, 10:20 [ТС] |
3 |
в той программе я разобрался спасиб, помоги разобраться в другой, дан текстовый фаил и слово, наити все строки в котором содержится данное слово и все эти строки записать в новый фаил, дай подсказку небольшую
0 |
Puporev Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
||||
23.06.2011, 11:17 |
4 |
|||
0 |
Лучший ответ
Александр Устименко
Просветленный
(24306)
6 лет назад
Решение на Pascal ABC
var f1: text;
i: integer;
stroka, slovo: string;
begin
Assign(f1, ‘input.txt’);
Reset(f1);
write (‘slovo=’);
readln (slovo);
i:=0;
while not Eof(f1) do
begin
readln (f1, stroka);
if slovo in stroka then inc(i);
end;
Close(f1);
if i <> 0 then writeln (‘Слово есть в файле’)
else writeln (‘Слово отсутствует, в файле’);
end.
Остальные ответы
Сергей Кротов
Мыслитель
(7618)
6 лет назад
блин, в учебниках по Си, это стандартные учебные программы – они там приводятся и подрлбно разбираются
Капитан ГуглИскусственный Интеллект (145967)
6 лет назад
На Паскале точно так же.
Просто этому не хочется ничего читать или хотя бы искать в гугле, ему хочется, чтобы за него все сделали Двое из Ларца.
Юрий Моисеев
Оракул
(83754)
6 лет назад
Если файл состоит из слов, расположенных в столбик то примерно так
readln(slovo);
while not eof(f) do
begin
readln(f,s);
if s=slovo then…
—
end;
Автор | Тема: Программа,позволяющая найти нужные слова в файле(pascal abc).Подобие поисковика. (Прочитано 12042 раз) | |
0 Пользователей и 1 Гость смотрят эту тему. |
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
Есть код для поиска строк:
procedure Form4.button1_Click(sender: Object; e: EventArgs);
var F:TextFile;// Переменной присваивается значение TextFile
Str:string;// Переменной присваивается значение String
begin
Assign(F,'C:UsersНеизвестенDesktopЗаписнаяnomer.txt');
reset(F);// Открывает текстовый файл для чтения
while not eof(F) do// Цикл, который перебирает строки
begin
readln(F, Str);// Ввод словабуквыцифры для поиска строки
if pos(textbox1.text, Str)>0 // есть ли словобуквацифра в строке
then
textbox2.text:= str; // Вывод строки в текстбокс
end;
CloseFile(F);// Закрыть файл
end;
Код работает но возникла проблема. Допустим у меня есть в файле такая информация:
12345 Максим
67890 Максим
При вводе “Максим” мне выдает только посл. строку. А надо все строки в которых есть это слово. Как это организовать?
задан 28 мая 2014 в 7:24
вместо
textbox2.text:= str;
написать
textbox2.Text:= textbox2.Text + #13#10 + str;
Если писать textbox2.text:= str;, то вы каждый раз будете затирать прошлую запись в текстбоксе. А когда напишете textbox2.Text:= textbox2.Text + #13#10 + str;, то к предыдущей записи будете прибавлять новую. Такая операция сложения строк называется конкатенацией.
Гуглите конкатенацию и прочие операции со строками.
ответ дан 28 мая 2014 в 8:21
teanЫЧteanЫЧ
4,6852 золотых знака28 серебряных знаков46 бронзовых знаков
1
-
Horita
- Сообщения:14
- Зарегистрирован:06 окт 2008, 11:18
Задача: Дан файл, с каким либо русским текстом, надо найти в этом файле слово, введеное пользователем. Потом это слово нужно выделить цветом, в исходном тексте.
Первоночально мой алгоритм был таким. Я думала сверять по буквам, дошла до нахождения 1 буквы и записывания оставшихся в остаток, 2 букву у меня упорно не находило.
А как зделать 2 часть задания я низнаю вобще, даже незнаю как цветом выделить.
Я посмотрела “Разбиение строки на слова” думаю это бы подошло, а как дальше низнаю
-
somewhere
- Сообщения:1837
- Зарегистрирован:31 авг 2006, 17:14
- Откуда:71 RUS
- Контактная информация:
06 окт 2008, 14:02
Читайте про функцию POS, применять для каждой строки исходного текста. Если слово (подстрока) в строке файла найдено, то поиск для этой строки повторить с позиции после найденого слова.
It’s a long way to the top if you wanna rock’n’roll
-
Хыиуду
- Сообщения:2388
- Зарегистрирован:06 мар 2005, 21:03
- Откуда:Москва
- Контактная информация:
06 окт 2008, 16:43
А что значит “выделить слово цветом в исходном тексте”? Вывести весь текст на экран, а это слово другим цветом, что ли?
Короче, примерно так:
Код: Выделить всё
в цикле считать строку
Разбивать на слова
Если очередное слово совпадает с заданным, то:
функцией textcolor меняем цвет шрифта
выводим слово
той же функцией меняем цвет обратно (вроде бы светло-серый - 11?)
Если же нет - просто выводим слово
Искусство программирования – заставить компьютер делать все то, что вам делать лень.
Для “спасибо” есть кнопка “Спасибо” в виде звездочки внизу под ником автора поста.
-
Horita
- Сообщения:14
- Зарегистрирован:06 окт 2008, 11:18
08 окт 2008, 10:16
Эм, а не могли бы вы хоть какойто код выложить, я уже 5 день голову ломаю.
-
Serge_Bliznykov
- Сообщения:366
- Зарегистрирован:31 авг 2007, 03:06
08 окт 2008, 11:25
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.
-
Horita
- Сообщения:14
- Зарегистрирован:06 окт 2008, 11:18
08 окт 2008, 14:55
Да, я таким и выводила. Размер файла не ограничен. Там может быть хоть целая книга. Даже может бы ть одно и тоже слово несколько раз, хотя это в задании не сказано.
-
Horita
- Сообщения:14
- Зарегистрирован:06 окт 2008, 11:18
08 окт 2008, 15:04
Я вас не послушала и таки искала по буквам Додумалась птомучто тока до этого. И почти все получилось, но чтобы считать слово 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.
Низнаю где ошибка.
Впринцыпе, не хотела в файл слово вставлять, поэтому если скажите как можно здесь без файла обойтись то буду рада.