Отримання знань
дистанційна підтримка освіти школярів
Картография файла
Входные данные
Выходные данные
Пример входных данных
Пример выходных данных
Анализ условия и обсуждение идеи решения
Пример решения на C++:
#include "iostream"
#include "algorithm"
#include "vector"
#include "string"
using namespace std;
string s;
struct Directory
{
string name;
vector < Directory > menu;
vector < string > files;
};
void build(Directory& t, string s)
{
if(s == "*" || s == "]")
return;
if(s[0] == 'f')
{
t.files.push_back(s);
cin >> s;
build(t, s);
}
else
{
Directory d;
d.name = s;
cin >> s;
build(d, s);
t.menu.push_back(d);
cin >> s;
build(t, s);
}
}
void printLayer(int layer)
{
for(int i = 0; i < layer; ++i)
cout << "| ";
}
void print(Directory& t, int layer)
{
printLayer(layer);
cout << t.name << endl;
for(unsigned int i = 0; i < t.menu.size(); ++i)
print(t.menu[i], layer+1);
sort(t.files.begin(), t.files.end());
for(unsigned int i = 0; i < t.files.size(); ++i)
{
printLayer(layer);
cout << t.files[i] << endl;
}
}
int main()
{
string s;
int cnt = 0;
while(1)
{
cin >> s;
if(s == "#")
break;
Directory d;
d.name = "ROOT";
printf("DATA SET %d:\n", ++cnt);
build(d, s);
print(d, 0);
cout << endl;
}
return 0;
}
Попередня | Зміст | Наступна |
В системі:
гості - (1); користувачі -
(0)