2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Создать программу сравнения файлов.
Сообщение06.06.2015, 14:38 


06/06/15
5
Запорожье лучший город на земле
Помогите пожалуйста! Хочу создать программу сравнения больших
файлов разных расширений.

Я сам ничего еще не сделал. А вообще я читал книги по плюсам,
но еще не писал нормальных прог.

Вот, помогите пожалуйста кодом, идеями.

Наверное, было бы удобнее в разделенное окошко проги перетаскивать файлы мышкой, это было бы круто.

Главное, что вовсе не катит сравнивать файлы по-символьно.
Например, они сдвинуты друг от друга по фазе на немного,
тем более может это тот же код C++ или ассемблерный файл..

Может быть пусть прога замечает в них участки высокой схожести.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 15:35 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Вы хотите потренироваться в программировании или вам надо регулярно решать задачу сравнения большого количества файлов? В первом случае, это задача довольно большая и начните с чего попроще (а перетескивание мышкой и прочие GUI инструменты оставьте на потом), во втором случае ознакомьтесь со списком готовых программ: http://en.wikipedia.org/wiki/Comparison ... ison_tools

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 15:54 


06/06/15
5
Запорожье лучший город на земле
Спасибо! А я хочу сразу и потренироваться в программировании и мне надо регулярно решать задачу сравнения большого количества файлов, и опять же будет ну исключительно интересно читать код, предлагаемый людьми. Потренироваться я бы написал первее. Сейчас ознакомлюсь.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 17:13 
Заслуженный участник


27/04/09
28128
Даже если просто представить, что надо сравнить два файла с точки зрения лексического анализатора какого-то языка программирования (раз уж код на C++/ассемблере упомянут), придётся включать в программу этот самый лексический анализатор, и для каких-то языков его ненамного можно будет урезать. Где-то можно будет получить разницу только в количествах и типах пробельных символов, а где-то 12 и 12.00e+0 могут считаться одинаковой константой. Если ещё и от разницы в именах абстрагироваться, придётся как минимум хранить список идентификаторов, зарезервированных языком и имеющихся в стандартной библиотеке (хотя этого всё равно будет недостаточно, если не уметь доставать откуда-то и парсить подключаемые модули) с фиксированным значением, чтобы не пытаться унифицировать их с другими именами. И для каждого языка свой back-end. И если языки будут довольно разнообразными, front-end разрастётся кучей деталей.

Дальше, в самом начале упомянуто
Dmitro12345 в сообщении #1023967 писал(а):
разных расширений
Тут придётся front-end ещё сильнее обобщать, и получится нехилая иерархия интерфейсов для back-end’ов. В JPEG ведь похожесть совсем по-другому выражается даже просто из-за того что это представление изображения, а не текста.

Неподъёмно, если вовремя себя не ограничить, так что сделайте это сразу, определившись, файлы каких форматов сравнивать, а каких — не в первой версии.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 17:22 


06/06/15
5
Запорожье лучший город на земле
Тогда пусть это будут файлы ассемблера. Для начала хотя бы.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 17:25 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Dmitro12345 в сообщении #1023989 писал(а):
А я хочу сразу и потренироваться в программировании и мне надо регулярно решать задачу сравнения большого количества файлов
Начните ч простого. Напишите код, который просто сравнивает два простых текстовых файла и выводит одно слово в ответ - одинаковые или нет. Потом, для усложнения, возьмите какой-нибудь фильм гигабайта на 2 - 3, скопируйте в соседнюю папку и сравните эти две копии... Потом можно начать сравнивать файлы с несколькими строками...
Dmitro12345 в сообщении #1023989 писал(а):
опять же будет ну исключительно интересно читать код, предлагаемый людьми
Можете выбрать из того списка любой open source проект и читать его код...

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 18:02 
Заслуженный участник


27/04/09
28128
Dmitro12345 в сообщении #1024021 писал(а):
Тогда пусть это будут файлы ассемблера. Для начала хотя бы.
Выбирайте ассемблер, открывайте руководство по языку и смотрите раздел ≈ Lexical structure. :-)

-- Сб июн 06, 2015 20:03:54 --

После советов rockclimber, конечно. А то даже непонятно будет, чего с этим делать делать.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 21:37 


06/06/15
5
Запорожье лучший город на земле
Хорошо. Как нулевой шаг помогите с кодом как в разделенное окошко проги перетаскивать файлы мышкой.

Покажите пример, часть кода или напишите что лучше для этого воспользоваться тем-то и тем-то. Не знаю там, такими вот именно классами, прибамбасами, чем. Если что операционка windows xp.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 22:05 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Dmitro12345 в сообщении #1024134 писал(а):
Как нулевой шаг помогите с кодом как в разделенное окошко проги перетаскивать файлы мышкой.
Как минус первый шаг, повторю еще раз: оставьте GUI на потом. (GUI - это графический интерфейс, если что)
Это в первую очередь в образовательных целях. Пишите программу, которая будет вызываться из командной строки.

Стоп! А вы вообще умеете программировать? Хоть сколько-нибудь хоть на каком-нибудь языке?

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 22:27 


24/05/09

2054
Когда то пробовал сравнивать побайтово mp3 файлы (точнее - wav, полученные из mp3) с оригиналом, с целью наглядного определения количества отклонений, например для разных битрейтов. Получилось вот такое, вы такой результат хотите?

Изображение

P.S. Сравнивать имеет смысл только близкие по структуре несжатые файлы, например wav или bmp, разных способов обработки (кодирования). Ессно копии одного произведения. Иначе в результате будет бессмысленный набор цифр.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 22:36 
Заслуженный участник


27/04/09
28128
Dmitro12345 в сообщении #1024134 писал(а):
Хорошо. Как нулевой шаг помогите с кодом как в разделенное окошко проги перетаскивать файлы мышкой.
Не упомянуты язык, библиотека GUI, IDE. Телепаты тоже в отпуске (я сегодня попытался их заменить, и результат был ужасен).

-- Вс июн 07, 2015 00:40:24 --

rockclimber в сообщении #1024145 писал(а):
Как минус первый шаг, повторю еще раз: оставьте GUI на потом. (GUI - это графический интерфейс, если что)
Это в первую очередь в образовательных целях. Пишите программу, которая будет вызываться из командной строки.
Угу, согласен. One thing at a time. Потом, научиться сделать аккуратный консольный интерфейс тоже не совсем скучно, а автоматизировать работу с ним в любом окружении проще графического.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение06.06.2015, 23:22 


06/06/15

12
Dmitro12345 в сообщении #1023967 писал(а):
Например, они сдвинуты друг от друга по фазе на немного,


Это что значит?

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение07.06.2015, 09:06 


06/06/15
5
Запорожье лучший город на земле
вы такой результат хотите?

Красиво!!!! Правда красиво. Ну да, хочу что-то в этом роде.


друг от друга по фазе на немного- например, в одной программе
совершенно похожий участок кода идет с сотой позиции,
а в другой с двести пятидесятой, или сто двадцатой.


несжатые файлы- нуда, конечно, я о сжатых даже и не думал.


А вы вообще умеете программировать? Хоть сколько-нибудь хоть на каком-нибудь языке?
Об умении говорить не буду, я писал простые консольные
программы на C++, читал Либерти, Лафоре, и конечно же
в смысле программирования я буду иногда спрашивать несуразности.
Я путаю порой в программах вместе C и C++ и вообще все порой путаю.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение07.06.2015, 09:30 


24/05/09

2054
Dmitro12345 в сообщении #1024303 писал(а):
вы такой результат хотите?
Красиво!!!! Правда красиво. Ну да, хочу что-то в этом роде.


Это написано с помощью среды разработки С++ Builder. Похожим функционалом обладает среда разработки Qt, сейчас я перешёл на неё - более современная, официально бесплатная, много помощи можно найти в сети.

Обе эти среды разработки позволяют быстро создавать "красивые" приложения, с кнопками, меню, таблицами и т.п., не заморачиваясь внутренним устройством этих самых кнопок, таблиц - достаточно просто мышкой перетащить их на форму и настроить некоторые параметры. Для таблицы это количество строк, столбцов, наличие заголовка и т.п. Размер, положение на форме - всё настраивается визуально, просто мышкой ставишь куда хочешь и растягиваешь до нужного размера

То есть, самому писать "таблицы" не нужно, от вас требуется лишь код для заполнения таблиц.

По поводу консолей - дело вкуса, мне как-то не приглянулись, я ими и не заморачивался. Сразу хотелось писать красивые виндос программки, соответственно искал средства, которые это позволяют - ну и собсна, кто ищет, тот найдёт.

Если в программе для вывода инфы предпочтительно использовать таблицы, то запрограммировать такую консоль, да ещё с хоть сколько-нибудь понятной картинкой на выходе - имхо будет посложнее, чем заполнить готовую таблицу.

 Профиль  
                  
 
 Re: Создать программу сравнения файлов.
Сообщение07.06.2015, 12:48 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Dmitro12345 в сообщении #1024303 писал(а):
Об умении говорить не буду, я писал простые консольные
программы на C++, читал Либерти, Лафоре, и конечно же
в смысле программирования я буду иногда спрашивать несуразности.
Понятно. Что такое процедурное программирование и объектно-ориентированное программирование - знаете?
В принципе, современные фреймворки уже давно (лет 20 как) позволяют программировать "мышкой". Вы не пишете код, а просто мышкой тыкаете на форме - тут будет кнопка, тут - поле для ввода, и т. д. На первое время и этого достаточно, конечно, но лучше все-таки получить представление о том, как все это реализовано изнутри. Я C++ не знаю, литературу подсказать не могу.
Самое краткое описание того, как вам сделать такую программу, будет выглядеть так:
1) найти, установить, запустить среду разработки (IDE)
2) Создать новый проект и форму
3) поместить на форму компонент(ы), которые будут отображать текст из ваших файлов
4) написать обработчики нужных событий (их названия в разных средах могут отличаться, например, событие "бросания" после перетаскивания файла в Delphi называется onDrop).
Если что-то из этого непонятно, то ничего не могу поделать - вам придется сначала пару толстых книжек прочитать, прежде, чем у вас все заработает.

Это все про графический интерфейс было. С консольными приложениями проще намного. Вы, собственно, можете уже начинать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group