Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите алгоритм / 12 сообщений из 12, страница 1 из 1
28.02.2006, 11:47
    #33570168
ednet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
Подскажите пожалуйста, если не в облом, алгоритм программы, которая обходит все подкаталоги родительского каталога до конечной глубины и ищет файлы с определенным розширением. Или подскажите где можно найти, такой алгоритм, или код на С или на JScript.
...
Рейтинг: 0 / 0
28.02.2006, 13:47
    #33570701
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
Хм. Трудно держать в памяти столь сложные алгоритмы, но если поищете по словам "рекурсивный спуск", наверное найдете что-нибудь полезное.
...
Рейтинг: 0 / 0
28.02.2006, 15:05
    #33571052
ednet
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
softwarerХм. Трудно держать в памяти столь сложные алгоритмы, но если поищете по словам "рекурсивный спуск", наверное найдете что-нибудь полезное.

Спасибо, поищу...
...
Рейтинг: 0 / 0
28.02.2006, 15:24
    #33571127
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
2 softwarer
Наверное правильнее сказать рекурсивный обход дерева.
Спуск это все-таки из области синтаксического разбора
...
Рейтинг: 0 / 0
28.02.2006, 15:52
    #33571260
-------------
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
2 ednet : Фиг ли искать http://directory.fsf.org/findutils.html

2 softwarer : шутка, да?
...
Рейтинг: 0 / 0
28.02.2006, 16:50
    #33571491
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
*Наверное правильнее сказать рекурсивный обход дерева.
Спуск это все-таки из области синтаксического разбора
Правильнее. Но в таком контексте тоже употребляется - проверил по гуглю :)
...
Рейтинг: 0 / 0
01.03.2006, 16:37
    #33574565
Valer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
http://algolist.manual.ru/
...
Рейтинг: 0 / 0
01.03.2006, 19:19
    #33575121
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
Algorithms in Java, Third Edition

By Robert Sedgewick

Publisher: Addison Wesley
Pub Date: July 23, 2002
ISBN: 0-201-36120-5, 768 pages

Chapter 5. Recursion and Trees
...
Рейтинг: 0 / 0
03.03.2006, 07:36
    #33578744
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
ednetПодскажите пожалуйста, если не в облом, алгоритм программы, которая обходит все подкаталоги родительского каталога до конечной глубины и ищет файлы с определенным розширением. Или подскажите где можно найти, такой алгоритм, или код на С или на JScript.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
Private Sub List_Dir_In_detail(otkuda As String, kuda As String, chto As String, mem_chto As String) ' 
Dim tipF As String
Dim FSO As New Scripting.FileSystemObject '  MicroSoft Scripting Runtime
Dim pap As Folder
Dim fil As File

Dim r_DIR As String
    r_DIR = otkuda
If Mid(r_DIR, Len(r_DIR),  1 ) <> "\" Then
       r_DIR = r_DIR & "\"
End If
Dim key2 As String
Dim key3 As String
Dim key4 As String
Dim key5 As String
 
Dim objFold As Folder
Set objFold = FSO.GetFolder(r_DIR)

Dim objFiles As Files
Set objFiles = objFold.Files
For Each fil In objFiles
   chto = mem_chto
   key4 = fil.Name
   key5 = key3 & "\" & key4
   tipF = LCase(slovoPoslednee(".", key4))
   If tipF = "TMP" Or tipF = "TEMP" Or tipF = "BAK" Then
      ' эти файлы пропустим
   Else
      If (key4 Like chto) Then
         chto = key4
      End If
      If key4 = chto Then
         Me.otk1.Caption = r_DIR
         Me.kud2.Caption = kuda
         Me.cto3.Caption = chto
         Copy_Click r_DIR & key4, kuda & "\" & chto
      End If
   End If
Next

If rabota = False Then
   GoTo Exit_List_Dir_In_detail
End If

For Each pap In objFold.SubFolders
   key2 = pap.Name
   key3 = r_DIR & key2
   
   Set objFiles = pap.Files
   For Each fil In objFiles
      chto = mem_chto
      If rabota = False Then
         Exit For
      End If
      key4 = fil.Name
      key5 = key3 & "\" & key4
      tipF = LCase(slovoPoslednee(".", key4))
      If tipF = "TMP" Or tipF = "TEMP" Or tipF = "BAK" Then
         ' эти файлы пропустим
      Else
         If (key4 Like chto) Then
            chto = key4
         End If
         If key4 = chto Then
            Me.otk1.Caption = key3
            Me.kud2.Caption = kuda & "\" & key2
            Me.cto3.Caption = chto
            If Not FSO.FolderExists(kuda & "\" & key2) Then
               CreateDirectory kuda & "\" & key2
            End If
            Copy_Click key5, kuda & "\" & key2 & "\" & chto
         End If
      End If
   Next
   chto = mem_chto
   List_Dir_In_detail key3, kuda & "\" & key2, chto, mem_chto
Next
Exit_List_Dir_In_detail:

Set FSO = Nothing
Set pap = Nothing
Set fil = Nothing
Set objFold = Nothing
Set objFiles = Nothing
End Sub
...
Рейтинг: 0 / 0
03.03.2006, 07:42
    #33578753
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
ednetПодскажите пожалуйста, если не в облом, алгоритм программы, которая обходит все подкаталоги родительского каталога до конечной глубины и ищет файлы с определенным розширением. Или подскажите где можно найти, такой алгоритм, или код на С или на JScript.

НА CLIPPER 5.01

* ïðîãðàììà ñîçäàåò áàçó äàííûõ ñîäåðæàùóþ ñïèñîê êàòàëîãîâ è ôàéëîâ íà äèñêå C:
*
* êîìïèëèðîâàòü CLIPPER.EXE spisok /N/W
* IF ERRORLEVEL 0 RTLINK FILE spisok

#define F_NAME 1 //
#define F_SIZE 2 //
#define F_DATE 3 // ÊÎÍÑÒÀÍÒÛ ÄËß ÔÓÍÊÖÈÈ Directory()
#define F_TIME 4 //
#define F_ATTR 5 //

Field put, cat // ïîëÿ áàçû äàííûõ
Memvar massiv, nomZapis, i, p, FileNam // ïåðåìåííûå ïðîãðàììû

Procedure Spisok // îñíîâíàÿ ïðîöåäóðà
Set Cursor OFF
?"ïðåðâàòü ALT+C"
?
CreateDBF() // ñîçäàòü áàçó äàííûõ
USE katalogi // îòêðûòü áàçó äàííûõ
Katalogs("C:") // äîáàâèòü ñïèñîê êàòàëîãîâ è ôàéëîâ â áàçó
go TOP // ïåðåéòè íà ïåðâóþ çàïèñü
Do While .not.Eof()
nomZapis := RecNo() // çàïîìíèì íîìåð çàïèñè
if cat == "D" // Åñëè ýòî êàòàëîã, òî
Katalogs( AllTrim(put) ) // ñíîâà äîáàâèì ñïèñîê â áàçó.
go nomZapis // âåðíåìñÿ
endif
skip // ïðî÷òåì ñëåäóþùóþ çàïèñü
@MaxRow(),00 Say str(RecNo(),8)
EndDo
Close All
Return

Procedure Katalogs(p) // îïðåäåëèì êàêèå êàòàëîãè è ôàéëû
massiv := Directory(p+"\*.*", "D") // ñîäåðæàòñÿ â óêàçàííîì ïóòè
For i := 1 To LEN(massiv) // è äîáàâèì èõ â áàçó
FileNam := ALLTRIM( massiv[i,F_NAME] )
if FileNam <> '.' .and. FileNam <> '..'
Append Blank
if ALLTRIM(massiv[i,F_ATTR]) == 'D'
cat := 'D'
else
cat := 'F'
endif
put := p+'\'+FileNam
@MaxRow(),10 Say str(RecNo(),8)
endif
Next
Return

Procedure CreateDBF // ñîçäàäèì ïóñòóþ áàçó äàííûõ
massiv := {}
AADD(massiv, {"put", "C", 128,0 })
AADD(massiv, {"cat", "C", 1,0 })
dbCreate("katalogi", massiv)
Return
...
Рейтинг: 0 / 0
03.03.2006, 12:29
    #33579628
selinoth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
Предлагаю решение на PHP
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?php

function process_file ( $filename ) {
    // делаем чито-нибуть с файлом
}

function process_directory ( $path, $recursively=false ) {

    // читаем содержимое директории
    $dir = opendir( $path );
    if (!$dir)
        return;

    // вытаскиваем имена файлов и директорий в отдельные каталоги
    $files = array();
    $dirs  = array();
    while ( ($item = readdir( $dir )) !== false ) {
        if (in_array( $item, array( '.', '..' )))
            continue;
        $item = "$path\\$item";
        if (is_file( $item ))
            $files[] = $item;
        else
        if (is_dir( $item ))
            $dirs[] = $item;
    }
    closedir( $dir );

    // для всех файлов выполняем некоторое действие
    // (здесь можно проверить расширение)
    foreach ($files as $filename)
        process_file( $filename );

    // если нужны вложенные директории, то вот...
    if ($recursively)
        foreach ($dirs as $directory)
            process_directory( $directory, true, $overwrite );

}

?>
...
Рейтинг: 0 / 0
03.03.2006, 15:48
    #33580582
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите алгоритм
ednet..алгоритм программы, которая обходит все подкаталоги родительского каталога до конечной глубины и ищет файлы с определенным розширением. Или подскажите где можно найти, такой алгоритм, или код на С или на JScript.

в досе енто выглядет так....

dir . /s/p

с уважением
(круглый)
ЗЫ
А если серьёзно - алгоритм прост до безобразия... Обычно берутся гэт фёст и гэт нэкст от данной операционки... При встрече на гэт нексе, у сосканированного элемента свойства - подкаталог, вызывается рекурсия алгоритма (следим за размером стэка, если он не имеет автоматического перераспределения) гэт нэкст с конструированием нового путя...
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите алгоритм / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]