Advertisement
Guest User

Untitled

a guest
May 31st, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. #include "Tree.h"
  2. int
  3. main (void)
  4. {
  5. Tree_node *Top;
  6. int returning;
  7. string Simbol;//символ
  8. ifstream file("Base.txt");
  9. getline (file, Simbol);
  10. getline (file, Simbol);
  11. Top = Construction_tree(Simbol, file);
  12. User New_user(Top);
  13. file.close();
  14. New_user.Parse("PRINT MATLOG 2rav ");
  15. New_user.Parse("DELETE MM~MATH~VM~Afonin~");
  16. returning = New_user.Parse("ADD MM|MATH|VM|[Afonin|~Proga~(123)tut opisanie~|2rav~(12)tut tozhe~|]");
  17. New_user.Parse("SELECT MM");
  18. New_user.Parse("PRINT Proga 2rav ");
  19. New_user.Parse("END");
  20. if (returning == 2)
  21. {
  22. }
  23. file.close();
  24. ofstream Out_file("Base.txt");
  25. Off_base(Top, Out_file);
  26. Out_file.close();
  27. Cleaner(Top);
  28.  
  29. }
  30. void
  31. Cleaner (Tree_node * Top_node)
  32. {
  33. for (int n = 0; n < (Top_node -> Down.size()); ++n)
  34. {
  35. Cleaner (Top_node -> Down[n]);
  36. }
  37. delete Top_node;
  38. }
  39. Tree_node *
  40. Construction_tree(string Node, ifstream &file)
  41. {
  42. string Simbol_;
  43. Tree_node *Top_node = new Tree_node;
  44. Top_node -> Name_of_node = Node;
  45. getline (file, Simbol_);
  46. if (Simbol_ == "{")
  47. {
  48. Top_node -> IsAHum_ = false ;
  49. getline (file, Simbol_);
  50. while (Simbol_ != "}" && file)
  51. {
  52. Top_node -> Down.insert (Top_node -> Down.end(), Construction_tree(Simbol_, file));
  53. getline (file, Simbol_);
  54. }
  55. }
  56. else if (Simbol_ == "[")
  57. {
  58. getline (file, Simbol_);
  59. while (Simbol_ != "]"&& file)
  60. {
  61. string Name_of_work;
  62. string Buf;
  63. int End_of_name = Simbol_.find("~");
  64. int End_of_hours = Simbol_.find("|");
  65. Name_of_work = Simbol_.substr(0,End_of_name);
  66. Top_node -> Work[Name_of_work].Description = Simbol_.substr( End_of_hours + 1);
  67. Top_node -> Work[Name_of_work].Duration = stoi(Simbol_.substr (End_of_name + 1, End_of_hours - End_of_name - 1));
  68. getline (file, Simbol_);
  69. }
  70. Top_node->IsAHum_ = true;
  71. }
  72. return Top_node;
  73. }
  74. void
  75. Off_base(Tree_node * Top_node, ofstream &file)
  76. {
  77. if (Top_node -> IsAHum_ == false)
  78. {
  79. file<<"\n" << Top_node -> Name_of_node << "\n{";
  80. cout <<"\n"<< Top_node -> Name_of_node << "\n{";
  81. for( int n = 0; n < Top_node -> Down.size(); ++n)
  82. {
  83. Off_base (Top_node -> Down [n], file);
  84. }
  85. file << "\n}";
  86. cout << "\n}";
  87. }
  88. else if(Top_node -> IsAHum_ == true)
  89. {
  90. file << "\n"<<Top_node -> Name_of_node << "\n[\n";
  91. cout <<"\n"<< Top_node -> Name_of_node << "\n[\n";
  92. for(map <string , Description_of_work>::iterator i = Top_node -> Work.begin(); i != Top_node -> Work.end(); ++i)
  93. {
  94. file << i -> first <<"~" << i -> second.Duration << "|" << i -> second.Description << "\n";
  95. cout << i -> first << "~"<< i -> second.Duration << "|" << i -> second.Description << "\n";
  96. }
  97. file << "]";
  98. cout << "]";
  99.  
  100. }
  101. }
  102. string
  103. Split_str (string & Splitng_str, string separator)
  104. {
  105. string buf;
  106. string Word;
  107. int End_word;
  108. End_word = Splitng_str.find(separator);
  109. if (End_word == string::npos)
  110. {
  111. return ""; //ВЕРНУТЬ ОШИБКУ
  112. }
  113. Word = Splitng_str.substr(0, End_word);
  114. Splitng_str = Splitng_str.substr(End_word+separator.length());
  115. return Word;
  116. }
  117. void Superpr (Tree_node FR)
  118. {
  119. cout << FR.Name_of_node<<" "<< FR.IsAHum_<<" "<<FR.Down.size() <<"\n";
  120. for (int i = 0; i < FR.Down.size(); i++)
  121. {
  122. Superpr(*(FR.Down[i]));
  123. }
  124.  
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement