Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Tree.h"
- int
- main (void)
- {
- Tree_node *Top;
- int returning;
- string Simbol;//символ
- ifstream file("Base.txt");
- getline (file, Simbol);
- getline (file, Simbol);
- Top = Construction_tree(Simbol, file);
- User New_user(Top);
- file.close();
- New_user.Parse("PRINT MATLOG 2rav ");
- New_user.Parse("DELETE MM~MATH~VM~Afonin~");
- returning = New_user.Parse("ADD MM|MATH|VM|[Afonin|~Proga~(123)tut opisanie~|2rav~(12)tut tozhe~|]");
- New_user.Parse("SELECT MM");
- New_user.Parse("PRINT Proga 2rav ");
- New_user.Parse("END");
- if (returning == 2)
- {
- }
- file.close();
- ofstream Out_file("Base.txt");
- Off_base(Top, Out_file);
- Out_file.close();
- Cleaner(Top);
- }
- void
- Cleaner (Tree_node * Top_node)
- {
- for (int n = 0; n < (Top_node -> Down.size()); ++n)
- {
- Cleaner (Top_node -> Down[n]);
- }
- delete Top_node;
- }
- Tree_node *
- Construction_tree(string Node, ifstream &file)
- {
- string Simbol_;
- Tree_node *Top_node = new Tree_node;
- Top_node -> Name_of_node = Node;
- getline (file, Simbol_);
- if (Simbol_ == "{")
- {
- Top_node -> IsAHum_ = false ;
- getline (file, Simbol_);
- while (Simbol_ != "}" && file)
- {
- Top_node -> Down.insert (Top_node -> Down.end(), Construction_tree(Simbol_, file));
- getline (file, Simbol_);
- }
- }
- else if (Simbol_ == "[")
- {
- getline (file, Simbol_);
- while (Simbol_ != "]"&& file)
- {
- string Name_of_work;
- string Buf;
- int End_of_name = Simbol_.find("~");
- int End_of_hours = Simbol_.find("|");
- Name_of_work = Simbol_.substr(0,End_of_name);
- Top_node -> Work[Name_of_work].Description = Simbol_.substr( End_of_hours + 1);
- Top_node -> Work[Name_of_work].Duration = stoi(Simbol_.substr (End_of_name + 1, End_of_hours - End_of_name - 1));
- getline (file, Simbol_);
- }
- Top_node->IsAHum_ = true;
- }
- return Top_node;
- }
- void
- Off_base(Tree_node * Top_node, ofstream &file)
- {
- if (Top_node -> IsAHum_ == false)
- {
- file<<"\n" << Top_node -> Name_of_node << "\n{";
- cout <<"\n"<< Top_node -> Name_of_node << "\n{";
- for( int n = 0; n < Top_node -> Down.size(); ++n)
- {
- Off_base (Top_node -> Down [n], file);
- }
- file << "\n}";
- cout << "\n}";
- }
- else if(Top_node -> IsAHum_ == true)
- {
- file << "\n"<<Top_node -> Name_of_node << "\n[\n";
- cout <<"\n"<< Top_node -> Name_of_node << "\n[\n";
- for(map <string , Description_of_work>::iterator i = Top_node -> Work.begin(); i != Top_node -> Work.end(); ++i)
- {
- file << i -> first <<"~" << i -> second.Duration << "|" << i -> second.Description << "\n";
- cout << i -> first << "~"<< i -> second.Duration << "|" << i -> second.Description << "\n";
- }
- file << "]";
- cout << "]";
- }
- }
- string
- Split_str (string & Splitng_str, string separator)
- {
- string buf;
- string Word;
- int End_word;
- End_word = Splitng_str.find(separator);
- if (End_word == string::npos)
- {
- return ""; //ВЕРНУТЬ ОШИБКУ
- }
- Word = Splitng_str.substr(0, End_word);
- Splitng_str = Splitng_str.substr(End_word+separator.length());
- return Word;
- }
- void Superpr (Tree_node FR)
- {
- cout << FR.Name_of_node<<" "<< FR.IsAHum_<<" "<<FR.Down.size() <<"\n";
- for (int i = 0; i < FR.Down.size(); i++)
- {
- Superpr(*(FR.Down[i]));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement