информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Ростелеком заподозрили в попытке... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Кроме рекурсии, больше ни чего нет?!?!?! 18.07.07 17:48  Число просмотров: 2443
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > и мне нужен не просто алгоритм прохода по каталогу, а
> самая
> > быстрая реализация этого самого прохода :)
> Алгоритмов тут всего-то ничего, раз два и обчелся. А по
> скорости все одинаковы будут и скорость будет определяться
> не методологией, и не быстродействием процессора-памяти, а
> накопителем.
> Если же использовать метод не рекурсивного обхода, а по
> уровням, то скорости может добавить, если каталоги уровня
> сначала упорядочить по их месторасположению на диске. Хотя
> и это может дать слишком малый прирост скорости, если
> каталоги форагментированы и фрагменты и так раскиданы по
> всему диску.

При поиске в нете я обнаружил рекурсивную реализацию (правда на delphi), вообщем то других вариантов не описано. Интересное предложение насчёт уровней, но ИХМО делать постоянную дефраминтацию выйдет дороже по времени (всё равно спасибо).

Если не трудно на киньте линк(или сам код) рекурсивного прохода на Си.
<programming>
[C++] задача на проход по каталогу на всю глубину 16.07.07 22:34  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
нужен самый быстрый алгоритм прохлда покаталогу, исходные данные это начальный адрес, глубина максимальная. На выходе нужен фаил с полными адремсами ко всем подкаталогам и файлам с данными об их размере и дате последнего изменения. Подскажите плз что и где можно почитать. Не как не могу найти алгоритм.

Заранее спасибо.
Есть такой алгоритм прямо в этом форуме, но к твоему сожалению не на C++ 18.07.07 13:26  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>


http://bugtraq.ru/forum/full/2005/sysadmin/127145.html
[C++] Дык, алгоритм прохождения лабиринта: 17.07.07 05:58  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
Поворачивай всегда вправо, помечай, где уже был...
Если всегда поворачивать вправо, то помечать не надо 17.07.07 12:07  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Хотя в данном случае по моему проще будет рекурсивный обход
Прошу прощения но я спроил знает ли кто - что и где почитать 17.07.07 17:28  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
и мне нужен не просто алгоритм прохода по каталогу, а самая быстрая реализация этого самого прохода :)
Алгоритмов тут всего-то ничего, раз два и обчелся. А по... 17.07.07 17:59  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> и мне нужен не просто алгоритм прохода по каталогу, а самая
> быстрая реализация этого самого прохода :)
Алгоритмов тут всего-то ничего, раз два и обчелся. А по скорости все одинаковы будут и скорость будет определяться не методологией, и не быстродействием процессора-памяти, а накопителем.
Если же использовать метод не рекурсивного обхода, а по уровням, то скорости может добавить, если каталоги уровня сначала упорядочить по их месторасположению на диске. Хотя и это может дать слишком малый прирост скорости, если каталоги форагментированы и фрагменты и так раскиданы по всему диску.
[C++] Кроме рекурсии, больше ни чего нет?!?!?! 18.07.07 17:48  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > и мне нужен не просто алгоритм прохода по каталогу, а
> самая
> > быстрая реализация этого самого прохода :)
> Алгоритмов тут всего-то ничего, раз два и обчелся. А по
> скорости все одинаковы будут и скорость будет определяться
> не методологией, и не быстродействием процессора-памяти, а
> накопителем.
> Если же использовать метод не рекурсивного обхода, а по
> уровням, то скорости может добавить, если каталоги уровня
> сначала упорядочить по их месторасположению на диске. Хотя
> и это может дать слишком малый прирост скорости, если
> каталоги форагментированы и фрагменты и так раскиданы по
> всему диску.

При поиске в нете я обнаружил рекурсивную реализацию (правда на delphi), вообщем то других вариантов не описано. Интересное предложение насчёт уровней, но ИХМО делать постоянную дефраминтацию выйдет дороже по времени (всё равно спасибо).

Если не трудно на киньте линк(или сам код) рекурсивного прохода на Си.
гугл :) 18.07.07 19:31  
Автор: i1 Статус: Незарегистрированный пользователь
<"чистая" ссылка>


http://www.google.ru/search?q=%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9+%D0%BE%D0%B1%D1%85%D0%BE%D0%B4+%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2+windows+c%2B%2B
http://cclib.nsu.ru/projects/gnudocs/texts/bogatir/6.htm
про гугл я уже всё знаю, спб 18.07.07 19:35  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
еще парочка ссылок... может поможет... :) 18.07.07 20:29  
Автор: i1 Статус: Незарегистрированный пользователь
<"чистая" ссылка>


http://www.codeguru.com/cpp/w-p/files/comments.php/c4479/?thread=52622
http://www.codeguru.com/cpp/w-p/files/folderdirectorymaintenance/article.php/c12145/
http://www.codeguru.com/cpp/w-p/files/folderdirectorymaintenance/article.php/c12145/
[C++] Спасибо 18.07.07 22:25  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
есть вот такая реализация: 18.07.07 19:28  
Автор: hotice Статус: Незарегистрированный пользователь
Отредактировано 18.07.07 19:30  Количество правок: 1
<"чистая" ссылка>
есть вот такая реализация:
[code]
void ScanDir(String dir)
{
TSearchRec SearchRec;
FindFirst(dir+"\\*.*", faAnyFile, SearchRec);
do
{
if(SearchRec.Size == 0 && SearchRec.Name.Length()>2 )
//здесь я как понимаю действия если найден каталог
ScanDir(dir+"\\"+SearchRec.Name);
else
{
//а здесь если найден фаил
};
}while (FindNext(SearchRec)==0);
FindClose(SearchRec);
}
[\code]

помогите разобраться:
1. что за структура TSearchReс, как её определить.
2. и переменная типа string, ругается на ошибку.

P.S. Я программирую в среде Visual Studio 2005. Пробую работать с консольным приложением. В будущем перейду на MFC.
Рекурсия - самый простой и эффективный для таких задач метод. 18.07.07 18:37  
Автор: Den <Denis> Статус: The Elderman
<"чистая" ссылка>
Заводим массив структур (или динамический список Л1), в... 18.07.07 17:59  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Если не трудно на киньте линк(или сам код) рекурсивного
> прохода на Си.

Заводим массив структур (или динамический список Л1), в которой одним из свойств будет имя каталога. Заводим два указателя и инициализируем первым элементом массива. Первый указатель двигаем при добавлении найденого каталога, второй для перехода в новый каталог.
Используя функции "файндфёст" и "файнднекст" обходим сначала корневой каталог с поиском в нем каталогов по нужным фильтрам. Таким образом первый указатель по массиву продвинется на количество найденых каталогов первого уровня. Как только "файнднекст"ом дошли до конца, дергаем новый каталог "файндфёстом", взяв его имя по второму указателю. И так до тех пор пока второй указатель не добежит до первого.
А линков на рекурсию я не знаю.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach