![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Гость_Intro |
|
|||
Unregistered |
Я разрабатываю проект сравнения двух wav файлов. Открываю wav файлы с помощью обычных потоков файлового ввода-вывода(возможно кому-то это покажется топорным ). Моя начальная цель програмно вычислить то место, где у wav начинается основная часть(то есть звук). Зачем это нужно? Чтобы потом написать программу сравнивающую звук обоих файлов и выводящую процентное соотношение похожести.
Сама программа написана и работает, но основная часть, то есть функция сравнения не коректно выводит результаты! --- при компиляции ошибок замечено не было. P.S. ... Результат сравнения двух одинаковых файлов : 268 совпадений при размерах файлов 7 мегабайт Вот функция : void sravn_file(ifstream& wave1in, ifstream& wave2in, ofstream& result) { char w1,w2; while(! wave1in.eof() || ! wave2in.eof()) { wave1in.get(w1); wave2in.get(w2); if (w1 == w2) { i++; //это переменная-счётчик обьявленная как глобальная result.put(w2); cout << w2; wave1in.get(w1); wave2in.get(w2); } } } //Не судите меня строго я только начинающий. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Зачем два последних get'а ?
Какого типа у тебя переменная i ? Может просто происходит переполнение ?... -------------------- С уважением, г-н Посол. |
|||
|
||||
lynx_916 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 13.6.2004 Где: Молдова Репутация: нет Всего: 1 |
попробуй старыую ф-цию read().
читай за раз байт эдак 10. и помещай их куда-то. потом сравни и выбрось. -------------------- Who dares, wins. (с) Solid Snake |
|||
|
||||
Гость_Intro |
|
|||
Unregistered |
Вообще по хорошему надо было сделать цикл do while... мне надо совместить и условие о конечности входящих файловых потоках и условие обязательного предварительного сравнивания. Именно поэтому из-за своей топорности код выглядит нелепым
![]() ............................................................................................................ А про read() по-подробней... Дело в том, что я встретился с проблеммой когда даже ну очень похожие по звуку файлы различаются по-байтово. Эсть ли как какая-то уловка, чтобы пропускать некоторые байты в группе входящих по файловому потоку байтов? Пожалуйста напишите какой заголовочный файл нужен для read() и возможные параметры этой функции. Заранее благодарен. |
|||
|
||||
C/L |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 31.7.2004 Где: Самара Репутация: 1 Всего: 1 |
Сравнивались копии одного и того же файла или файлы с похожим звуком? Сравнивать похожие звуки по байтам думаю мало что даст, совпадение будет только у копии одного и тогоже файла. Сравнивать нужно спектры звуков или что-то более сложное. Если хочешь знать где начинается звук - формат файлов WAV в инете думаю найти несложно. |
|||
|
||||
C/L |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 31.7.2004 Где: Самара Репутация: 1 Всего: 1 |
||||
|
||||
C/L |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 31.7.2004 Где: Самара Репутация: 1 Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |