Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include "Tree.h"
  2. int main (void)
  3. {
  4. Tree_node *Top;
  5. string Simbol;//символ
  6. ifstream file("Base.txt");
  7. getline (file, Simbol);
  8. getline (file, Simbol);
  9. Top = Construction_tree(Simbol, file);
  10. User New_user(Top);
  11. New_user.Parse("sooqa");
  12. file.close();
  13. ofstream Out_file("Base.txt");
  14. Off_base(Top, Out_file);
  15. Out_file.close();
  16. Cleaner(Top);
  17. return 0;
  18.  
  19. }
  20. void Cleaner (Tree_node * Top_node)
  21. {
  22. for (int n = 0; n < (Top_node -> Down.size()); ++n)
  23. {
  24. Cleaner (Top_node -> Down[n]);
  25. }
  26. delete Top_node;
  27. }
  28. Tree_node * Construction_tree(string Node, ifstream &file)
  29. {
  30. string Simbol_;
  31. Tree_node *Top_node = new Tree_node;
  32. Top_node->Name_of_node = Node;
  33. Top_node->IsAHum_ = 2;
  34. getline (file, Simbol_);
  35. if (Simbol_ == "{")
  36. {
  37. Top_node -> IsAHum_ = 0 ;
  38. getline (file, Simbol_);
  39. while (Simbol_ != "}" && file)
  40. {
  41. Top_node -> Down.insert(Top_node -> Down.end(), Construction_tree(Simbol_, file));
  42. getline (file, Simbol_);
  43. }
  44. }
  45. else if (Simbol_ == "[")
  46. {
  47. getline (file, Simbol_);
  48. while (Simbol_ != "]")
  49. {
  50. string Name_of_work;
  51. Name_of_work = Simbol_.substr(0,Simbol_.find("~"));
  52. Simbol_ = Simbol_.substr(Simbol_.find("~")+1);
  53. Top_node->Work[Name_of_work] = Simbol_;
  54. getline (file, Simbol_);
  55. }
  56. Top_node->IsAHum_ = 1;
  57. }
  58. return Top_node;
  59. }
  60. void Off_base(Tree_node * Top_node, ofstream &file)
  61. {
  62. int S = Top_node -> IsAHum_;
  63. cout <<"~~"<< S;
  64. if (Top_node -> IsAHum_ == 0)
  65. {
  66. file<<"\n" << Top_node -> Name_of_node << "\n{";
  67. cout <<"\n"<< Top_node -> Name_of_node << "\n{";
  68. for( int n = 0; Top_node -> Down.size(); ++n)
  69. {
  70. Off_base (Top_node -> Down [n], file);
  71. }
  72. file << "}";
  73. cout << "}";
  74. }
  75. else if(Top_node -> IsAHum_ == 1)
  76. {
  77. file << "\n"<<Top_node -> Name_of_node << "\n[\n";
  78. cout <<"\n"<< Top_node -> Name_of_node << "\n[\n";
  79. for(map <string , string>::iterator i = Top_node -> Work.begin(); i != Top_node -> Work.end(); ++i)
  80. {
  81. file << i -> first <<"~" << i -> second <<"\n";
  82. cout << i -> first << "~"<< i -> second << "\n";
  83. }
  84. file << "]";
  85. cout << "]";
  86.  
  87. }
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement