Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Рекурсивный алгоритм
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Ivan Kuznetzov
Делаю плеер на АВРке, файловая система fatfs. Подскажите пожалуйста, как грамотно реализовать рекурсивный алгоритм поиска файлов с функцией перемещения по текущему воспроизводимому файлу "вперед-назад", с возможностью работы с подпапками.
ar__systems
зачем рекурсивный?
Ivan Kuznetzov
Цитата(ar__systems @ Feb 27 2011, 00:40) *
зачем рекурсивный?

Хочется перемещаться вперед-назад по файлам.
rezident
Я слабо знаком с предметом обсуждения, но у меня возник встречный вопрос:разве fatfs файловая система с последовательным доступом к файлам? Из беглого чтения описания - вроде нет. Тогда причем тут вообще рекурсия и рекурсивный алгоритм? Вы хотите создать список воспроизведения наподобие playlist? Ну так что вам мешает его создать? Может вам нужен не "рекурсивный алгоритм", а алгоритм случайного выбора из имеющегося списка файлов? Уточните исходный вопрос.
KRS
Насколько я понял рекурсивный - потому что с обходом дерева каталогов. Т.е. нужно просто перейти к следующему файлу - если это подкаталог - то к первому файлу подкаталога...
Если бы просто надо было получить список всех файлов - то это была бы рекурсивная функция!

А т.к. надо получить следующий файл, надо запоминать данные в виде массива с текущими позициями в каждом каталоге. В самом тупом виде будет примерно следующее
Код
unsigned level;
DIR last;
unsigned dir_pos[MAX_LEVEL];
char* get_next_file(void)
{
    while(1) {
        f_readdir(&last,...);
        если подкаталог {
            ++level;
            f_opendir(&last,...)
            continue;
        }
        если конец {
            dir_pos[level]=0;
            --level;
            открыть каталог верхнего уровня
            пропустить dir_pos[level] файлов
            continue;
        }
        ++dir_pos[level];
        return имя файла
    }
}
sergeeff Jr.
И тут немного инфы...
http://base.vingrad.ru/view/1971-Kak-nayti-fayl-na-diske
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.