|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.05.2013, 16:59 | #1 |
Регистрация: 06.12.2010
Сообщений: 9
|
Сравнение строк двух файлов с сортировкой
Помогите, пожалуйста, с задачей:
Даны два текстовых файла Strok.txt (длинные строки) и PodStrok.txt (короткие строки). Рассортировать файл Strok.txt на два выходных файла по признаку: включают ли строки из Strok.txt в качестве подстрок строки из Podstrok.txt. Если включают - переписать строки из strok.txt в отдельный выходной файл, если нет - соответственно, в другой. |
03.05.2013, 17:56 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Помогаю.
Излагаю алгоритм решения задачи: 1. Считать все строки файла PodStrok.txt в массив строк. 2. Открыть файл Strok.txt на чтение и создать два новых файла - на запись (их имена в задании не указаны - придумать самому). 3. В цикле до конца файла читать по одной строке из входного файла. В начале цикла сбрасывать индикатор вхождения подстроки в строку. 4. Вложенный цикл, проверяющий, входит ли хоть одна подстрока из массива в текущую строку. Если входит - установить индикатор. 5. В зависимости от состояния индикатора записать строку в тот или другой файл. 6. Конец внешнего цикла. 7. Закрыть файлы. |
03.05.2013, 19:24 | #3 |
Регистрация: 06.12.2010
Сообщений: 9
|
Спасибо, s-andriano, я попытался сделать, но не получается. Исправьте, пожалуйста, мой код.
Код:
Последний раз редактировалось avante; 03.05.2013 в 19:59. Причина: опечатка |
03.05.2013, 20:38 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
Честно говоря, с ограничениями паскаля задача получается не столь тривиальная.
Учтите, что длина строк не должна превышать 255. Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
03.05.2013, 21:18 | #5 | |
Регистрация: 06.12.2010
Сообщений: 9
|
Спасибо, BDA.
Вопросы: 1) Цитата:
2) Где здесь кнопочка "Поблагодарить"? |
|
03.05.2013, 21:22 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
Пожалуйста (спасибо s-andriano за алгоритм).
Про ПаскальАБС ничего сказать на могу (не использую). В Делфи нет такого ограничения, но там программу написать можно более красиво и оптимально. Кнопочка Весы в левом нижнем углу поста.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
04.05.2013, 00:06 | #7 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Я бы стал решать задачу несколько иначе:
Код:
BDA написал программу универсально, но ужасно неоптимально. Единственное ограничение его программы он упомянул - длина строки не более 255 символов. В моем варианте ограничений намного больше: к уже упомянутому 255 символов добавляется: - ограничение на длину подстроки MaxSubstrLen, - ограничение на количество подстрок MaxSubstr. Но зато моя программа не выполняет лишних действий, которые могут увеличить время ее выполнения в сотни раз. PS. Программа писалась прямо здесь и на компилируемость не проверялась. |
04.05.2013, 00:34 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,289
|
s-andriano, согласен с Вами.
Я пожертвовал производительностью в угоду универсальности.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
04.05.2013, 13:17 | #9 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Это понятно.
Мне довелось работать еще под DOS без кэширования диска. При 1000 строк в каждом из файлов моя программа выполнила бы работу в таких условиях за 15-20 секунд, а Ваша - около 5 часов. Но зато, если будут превышены ограничения по длине строки или количеству строк, моя программа либо вообще не будет работать, либо будет работать неправильно. С учетом уже существующего ограничения в 255 символов, я решил, что на всеобщесть программа претендовать уже не может, а введенные дополнительные ограничения не сильно сузят сферу ее возможного применения. В конце концов, если у нас количество подстрок не превышает 200 с небольшим, ограничения на длину подстроки можно и не вводить. А при использовании 32-разрядных компиляторов ограничения вообще можно сделать несущественными. |
04.05.2013, 15:06 | #10 |
Регистрация: 06.12.2010
Сообщений: 9
|
s-andriano --Спасибо
BDA -- Спасибо |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сравнение строк двух текстовых файлов | Alina111 | Общие вопросы C/C++ | 4 | 10.01.2013 10:03 |
Сравнение двух строк | Drac0Sha | JavaScript, Ajax | 10 | 16.08.2012 00:28 |
Сравнение двух строк | helena91 | Общие вопросы Delphi | 4 | 23.02.2011 01:17 |
Сравнение двух произвольных файлов | rem2010 | Общие вопросы Delphi | 2 | 03.05.2010 13:21 |
сравнение двух строк | aza_kaz | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 01.01.2010 23:40 |