| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Работа с фаилами |
| Автор: Slammer 9.3.2009, 00:35 | ||
| Добрый вечер! Задание: Написать программу, которая работает таким способом - Пользователь вводит текст (строка до 40 символов. может состоять из несколько слов), который мы ищем в уже существуешем фаиле. Если ведёный текст совподает с тем что имеется в фаиле, тогда выводим его в другой фаил, указав номер строки, где он был найден. Обробатывать сущесвуюший фаил можно только по симболам и в текстовом режиме. Мне +- идея понятна как необходимо делать, но проблема в самой реализации, учитывая то, что знания почти нулевые в программном деле. Пожалуйста на мануал не отсылать, очень сложно в нём разобратся без помоши. Часть кода, которую я пытался написать сам, с уймой ошибок :( Спасибо за помощь! В приложении просто глупый пример существуешего фаила.
|
| Автор: Avaj 9.3.2009, 09:10 | ||
Ну кое-как потестил - вроде нормально всё:
Юзал MinGW / G++. |
| Автор: zim22 9.3.2009, 14:04 | ||
вот мой вариант.
|
| Автор: Avaj 9.3.2009, 15:38 | ||||
| zim22, И действительно - получилось короче. Но если получше потестить, то... например если входной файл такой:
а искать в нём :
|
| Автор: zim22 9.3.2009, 15:54 | ||
| Avaj, спасибо за тестирование я забыл обнулить cnt, после того как, вхождение подстроки найдено. надо так:
|
| Автор: Slammer 10.3.2009, 23:26 |
| Спасибо за быстрые ответы и помощь! |
| Автор: Anikmar 11.3.2009, 00:03 |
+1 Добавлено через 13 минут и 1 секунду Slammer, То-ли я что-то не то нажал, то-ли сафари глючит (а он действительно иногда глючит). В общем я вам поставил + за помощь вам же, хотя адресовывал его zim22. Может и я не туда жамкнул. Так что извините. |
| Автор: bsa 11.3.2009, 09:33 | ||
|
| Автор: Slammer 15.3.2009, 22:48 | ||
| Всем опять добрый вечер. Оказывается, не правильно понял условия задачи. Выводить надо было все те строчки + номер строки, где был найден вводимый поисковой текст. К примеру, из фаила txt_file.txt надо выводить 2, 3, 5, 6, 7 строки, если ищем 'to'; txt_file.txt _______________________ That's bad news for the content industries, which have fired off letter after menacing letter to the site, only to see their threats posted on The Pirate Bay, together a with mocking replies. Viborg said that no one has successfully indicted The Pirate Bay or sued its operators in Swedish courts. Attorneys for DreamWorks and Warner Bros., two companies among those that have issued take-down demands to the site, did not return calls for comment. _______________________ Помогите найти ошибку в моих карякулях:
Спасибо! |
| Автор: Slammer 16.3.2009, 11:05 |
| Сравнение необходимо посимвольно делать.. Тем самым, в начале цикла - просто все символы по очерёдности вкладываем в динамический массив. Параллельно проверяем нету ли там искаемой строки. Когда переходим к следуюшей строки - проверяем печатать ли текущею строку или нет. Удаляем массив. Повтор цикла.. В коде совершил ошибку, но не пойму где. |
| Автор: zim22 16.3.2009, 11:12 |
| Slammer, если мы ищем слово "ews". без буквы n в начале. прога должна найти что-нибудь? |
| Автор: Dmi3ev 16.3.2009, 11:44 | ||||
думаю, что да вот два поиска: Кнута-Морриса-Пратта (быстрый) и простой (медленный)
|
| Автор: Slammer 16.3.2009, 21:35 | ||
да. эмм. теперь думаю над теми двумя алгоритмами. |
| Автор: Dmi3ev 16.3.2009, 23:16 | ||
взял первый алгоритм, для примера:
выходной файл имеет вид (номер строки, номер позиции первого символа текста (кот. мы искали), сама строка): I want find all strings with this text: text Line: 1 First position of text: 4 String: My text Line: 2 First position of text: 14 String: lalalalalaal text Line: 3 First position of text: 1 String: text Line: 6 First position of text: 1 String: text Line: 8 First position of text: 1 String: text Line: 11 First position of text: 24 String: dsfadsfadsfasdfasdfasdftext |