Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оработка больших файлов, обработка данных 
:(
    Опции темы
lamber
Дата 6.1.2011, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Стоит задача сравнить два текстовых файла построчно, если строки совпадают, то произвести замену т.к. файлы большие, в лоб перебором очень долго. Подскажите алгоритмы или уже может готовые решения, для этого класса задач. Очень нужно.
PM MAIL   Вверх
Фантом
Дата 6.1.2011, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(lamber @  6.1.2011,  17:30 Найти цитируемый пост)
Стоит задача сравнить два текстовых файла построчно, если строки совпадают, то произвести замену т.к. файлы большие, в лоб перебором очень долго.

Т.е. совпадающие строки в файлах могут располагаться в любом порядке? Иначе не очень понятно, с чего должно быть "очень долго".

PM   Вверх
lamber
Дата 6.1.2011, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Да могу распологатся в любом порядке. Вот пример
 первый файл
some data key1 somedata key2 key3 somedata
...
key_n

второй файл
key1=>value1
key2=>value2
key3=>value3
...
key_n=>value_n

Нужно в первом файле заменить key на value файлы достаточно большие от 30-100мб (как первый так и второй) и если делать такой перебор в лоб это очень долго, даже не реально долго. Вот не знаю как к такой задаче подступиться. Буду очень признателен в помощи. 
PM MAIL   Вверх
Фантом
Дата 6.1.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Понятно. Тогда, пожалуй, схема такая. Для одного из файлов (при такой структуре лучше для второго) надо предварительно сделать какой-нибудь индекс. Ну, например, сделать B+ дерево (хотя можно и просто алфавитное, чтобы возни было меньше). После этого последовательно читать первый файл и подставлять замены. 

В принципе, такие штуки очень легко пишутся на языках, имеющих встроенные конструкции сопоставления с образцом (Пролог, Хаскель, ML и т.п.). Конкретно С  и C++ для таких задач малопригодны.
PM   Вверх
lamber
Дата 6.1.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Сенкс но из тех языков что перечислил ниодного не знаю, увы. Может кодом сможешь помочь или линки где можно было посмотреть. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.