Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
#1

Работа с деревом файлов/директорий - C++

20.08.2012, 17:32. Просмотров 1371. Ответов 6
Метки нет (Все метки)

Подскажите, пожалуйста, как преобразовать список из файлов и папок (гарантируется, что они описывают дерево с одним корнем - корневой директорией) в объект-дерево?
В первой строке n -общее количество файлов и директорий. В каждой из следующих строк - полный путь к файлу или директории, пробел и идентификатор файла или директории. Идентификаторы упорядочены по возрастанию.

пример списка:
tree[0]= "13";
tree[1]= ". 0";
tree[2]= "./download_client.sh 1";
tree[3]= "./random100_queries_sport.txt 2";
tree[4]= "./times.txt 3";
tree[5]= "./site 4";
tree[6]= "./site/site_kz_domains_random1000_2011-07-26.txt 5";
tree[7]= "./site/site_ru_domains_top1000_2011-07-26.txt 6";
tree[8]= "./site/site_by_domains_top1000_2011-07-27.txt 7";
tree[9]= "./site/kz 8";
tree[10]="./site/kz/random1000 9";
tree[11]="./site/kz/random1000/site_kz_random100_2011-07-16.xml 10";
tree[12]="./site/ru 11";
tree[13]="./site/ru/random100 12";

http://www.cyberforum.ru/cpp-beginners/thread2008039.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 17:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с деревом файлов/директорий (C++):

Рекурсивная функция вывода всех файлов и директорий
функция ищет все файлы включая директории с набором др. файлов и директорий при...

Как написать программу, удаляющую несколько файлов из разных директорий каждые 5 секунд?
Здравствуйте, уважаемы форумчани! Ситуация такая: нужно удалять несколько...

Работа с бинарным деревом: добавить элемент, удалить элемент, вывести в виде "дерева"
Создать программу для работы с бинарным деревом, реализующую функции: добавить...

Сортировка деревом
Программа должна прочитать строку слов из файла и отсортировать деревом. На...

Создание директорий
Здорова господа!!! Мне нужно динамически создавать директории в виндовс,...

6
I.M.
566 / 549 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 18:00 #2
Файлы и папки никакими флагами не отличаются что ли?
Считываешь полный путь к файлу или директории в строку, разделяешь ее на подстроки разделителем '/', затем стучишься в объект-дерево - последовательно подставляешь в него (начиная с корня дерева) все полученные подстроки. Если такая подстрока уже существует в дереве, то переходишь в нее, если не существует, то создаешь и переходишь в нее. Затем проверяешь след. подстроку.
0
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
20.08.2012, 18:37  [ТС] #3
Цитата Сообщение от I.M. Посмотреть сообщение
Файлы и папки никакими флагами не отличаются что ли?
Считываешь полный путь к файлу или директории в строку, разделяешь ее на подстроки разделителем '/', затем стучишься в объект-дерево - последовательно подставляешь в него (начиная с корня дерева) все полученные подстроки. Если такая подстрока уже существует в дереве, то переходишь в нее, если не существует, то создаешь и переходишь в нее. Затем проверяешь след. подстроку.
Если есть элемент списка, у которого нет потомков в дереве, то это файл, иначе это директория.

Как вообще это процесс создания объекта в объекте происходит? Очень хотелось бы увидеть хоть подобный пример
0
I.M.
566 / 549 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
20.08.2012, 18:55 #4
C++
1
2
3
4
5
6
7
8
9
class tree
{
public:
//тут публичные функции по работе с объектом дерева
private:
    std::string name_;
    std::vector<tree*> childs_;
    //тут прочие данные, которые нужно хранить внутри объекта
};
1
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.08.2012, 19:21 #5
Цитата Сообщение от Pasha88 Посмотреть сообщение
Если есть элемент списка, у которого нет потомков в дереве, то это файл, иначе это директория.
А как же пустые директории?
0
Pasha88
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 4
20.08.2012, 19:49  [ТС] #6
Цитата Сообщение от fasked Посмотреть сообщение
А как же пустые директории?
Вот условие, пардон, надо было сразу выложить..
0
Миниатюры
Работа с деревом файлов/директорий  
Masherocka
0 / 0 / 0
Регистрация: 21.08.2012
Сообщений: 5
21.08.2012, 13:25 #7
Если эту задачу описать теоретическими словами - то это десериализация структуры данных дерево. То что это файлы и каталоги - не принципиально. Кода в полном решении не на одну страничку. Вот здесь http://www.fulcrumweb.com.ua/archives/category/test/office_test_task разобраны решения похожей по сути задачи. Конечно, формат файла сериализации там другой (ваш список это и есть сериализованное представление дерева), но много идеологически/алгоритмически похожего.
0
21.08.2012, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 13:25
Привет! Вот еще темы с решениями:

Является ли граф деревом
Суть задачи заключается в том, что нужно проверить граф, является ли он...

Является ли граф - деревом?
Доброго времени суток. Есть граф, нужно пробежаться по нему в ширину, и если не...

Сортировка бинарным деревом
Получить число n на ввод; сделать сортировку бинарным деревом и построить...

Рекурсивный обход директорий
Уважаемые Гуру, требуется ваша помошь. Мне необходимо реализовать рекурсивный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru