Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GeForce46
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 18
#1

Дерево каталогов!Посмотрите ошибки - C++

13.11.2013, 14:59. Просмотров 239. Ответов 0
Метки нет (Все метки)

Перемещаться по нему
Создавать папки и выходить в корень

C++
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include "stdafx.h"
#include <vector>       // vector
#include <iostream>     // cout / cin / string
#include <algorithm>    // find
using namespace std;
 
// prototype for containers
vector<string> directory = {"."};
vector<string> upper_directory = {"/"};
 
// prototypes for main function
void menu();
void parse(string);
 
// prototypes for parsing input commands
int get_to_root(vector<string>, vector<string>, int size_upper, int); // recursion
void cd_func(); 
string pwd_func();
void mkdir_func();
void clear_func(vector<string>&, vector<string>&);
 
//////////////////
int main(void)
{           
    menu();
    return 0;
}   
//////////////////
 
string pwd_func() 
{
    return upper_directory.back(); 
}
 
void mkdir_func()
{   
    string temp_low_dir;
 
    cin >> temp_low_dir;    // name of low directory
    directory.push_back(temp_low_dir);  
 
    // write to upper dir name of current dir
    upper_directory.push_back(pwd_func());
}   
 
void cd_func()
{
    string name;
    cin >> name;    // directory to move in 
 
    if (name == "~")
        cout << "Depth = " << get_to_root(directory, upper_directory, upper_directory.size()-1, 0) << endl;
    else 
    {
        // vector<string>::iterator it = find(directory.begin(), directory.end(), name);
        // if(*it == directory.back())
        // {
            // cout << "dir not found" << endl;
        // }
        // whether the directory exist, moving in. **ERROR** if we enter alone directory, seg fault
//      for(auto it = directory.begin(); it != directory.end(); it++)
//      {
//          if(!name.compare(*it))
//          {
        // else
        // {
                upper_directory.push_back(name);
                directory.push_back(".");
        // }
//          }
//      }
    }
}
void menu()
{
    string exit = "exit";
    string input;
 
    do
    {
        cout << "Enter action: "; cin >> input; 
 
        parse(input);
    
        cout << "directory (that are in current)" << endl; 
        for(auto it = directory.begin(); it != directory.end(); it++)
            cout << " " << *it;
            
        cout << endl;
        
        cout << "upper_directory (current)" << std::endl;
        for(auto it = upper_directory.begin(); it != upper_directory.end(); it++)
            cout << " " << *it;
        
        cout << endl;
    } while(input.compare(exit));
}
void parse(string input)
{
    string cd = "cd";
    string mkdir = "mkdir";
    string pwd = "pwd";
    string clear = "clear";
 
    if(!input.compare(cd))
            cd_func();
        else if(!input.compare(pwd))
            cout << "CURRENT DIRECTORY: " << pwd_func() << endl;
        else if(!input.compare(mkdir))
            mkdir_func();
        else if(!input.compare(clear))
            clear_func(directory, upper_directory);
}
int get_to_root(
                vector<string> directory,       // container with directories
                vector<string> upper_directory, // container with upper_directories
                int size_upper,                 // size of upper_directory container
                int depth                       // resulting int
                )
{
    if(upper_directory.at(size_upper) != "/") 
    {
        if(upper_directory.at(size_upper) == upper_directory.at(size_upper-1))
            return get_to_root(directory, upper_directory, size_upper-1, depth);
        return get_to_root(directory, upper_directory, size_upper-1, depth+1);
    }
 
    if(upper_directory.at(size_upper) == "/")
        return depth;
 
    return 0;
}
void clear_func(vector<string>& directory, vector<string>& upper_directory)
{
    directory.clear();
    upper_directory.clear();
    directory.push_back(".");
    upper_directory.push_back("/");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 14:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дерево каталогов!Посмотрите ошибки (C++):

Просканировать дерево каталогов - C++
Доброго времени суток. Подскажите пожалуйста, как просканировать дерево каталогов на с++ и получить список всех файлов ?

Дерево каталогов. Не могу найти ошибку. - C++
Вот собственно написал программу, которая должна строить дерево каталогов. Но почему-то не строит, помогите найти ошибку, пожалуйста... ...

Посмотрите ошибки - C++
#include&lt;iostream&gt; using namespace std; struct person { int age; char name; char job; };

Посмотрите ошибки STL - C++
#include &lt;iostream&gt; #include &lt;map&gt; #include &lt;utility&gt; #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;queue&gt; #include...

Посмотрите код на наличие ошибки - C++
#include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; typedef vector&lt;int&gt; row; typedef vector&lt;row&gt; matrix; matrix Read() ...

Посмотрите ошибки: switch и строка в char - C++
#include &lt;locale.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;rus&quot;); ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 14:59
Привет! Вот еще темы с ответами:

Кто сможет, посмотрите на мой код. Ошибки синтаксиса - C++
пожалуйста помогите с ошибками в коде, #include &lt;iostream&gt; //1 #include &lt;cmath&gt; //2 #include &lt;fstream&gt; //3 //4 const long N =...

Бинарное дерево, исправить ошибки в коде - C++
в общем, есть такой вот код. компилится, ошибок нет. а запускаться - не запускается( подскажите, в чём проблема? #include &quot;stdafx.h&quot; ...

Красно-черное дерево, найти ошибки в коде - C++
Доброго Времени суток! Не совсем понимаю, что происходит в коде.Пытаюсь реализовать Красно-черное дерево. Прокомментируйте,...

Бинарное дерево. Выводит ошибки: data: необъявленный идентификатор - C++
Прошу помощи Вот программа: # include &lt;stdio.h&gt; # include &lt;conio.h&gt; struct NODE{ // определение узла дерева int...


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

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

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