Advertisement
amsavchenko

main for Max

May 17th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 15.78 KB | None | 0 0
  1. void set_tree () {
  2.         cout << "Введите количество элементов в дереве: ";
  3.         int amount_of_elements;
  4.         do {cin >> amount_of_elements; } while (amount_of_elements < 1);
  5.         cout << "Введите " << amount_of_elements << "элементов: " << endl;
  6.         for (int i = 0; i < amount_of_elements; i ++) {
  7.             cout << "  " << i + 1 << ": " ;
  8.             T key; cin >> key;
  9.             this->insert(key);
  10.         }
  11.     }
  12.  
  13. int main() {
  14.  
  15.     while (1) {
  16.         cout << "Доступны 3 режима работы: с целыми числами, с числами с плавающей запятой и со строками. Выберите, чтобы продолжить: " << endl;
  17.         cout << "1 - целые числа \n2 - числа с плавающей точкой\n3 - строки\n4 - закончить работу" << endl;
  18.         char mode_choise;
  19.         do { cin >> mode_choise; } while (mode_choise != '1' && mode_choise != '2' && mode_choise != '3' && mode_choise != '4');
  20.    
  21.         switch (mode_choise) {
  22.             case '1': {
  23.                 cout << "Выбран режим работы с целыми числами " << endl;
  24.                 cout << "Доступны следующие функции " << endl;
  25.                 cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
  26.                 char int_mode_choise;
  27.                 do { cin >> int_mode_choise; } while (int_mode_choise != '1' && int_mode_choise != '2' && int_mode_choise != '3' && int_mode_choise != '4' && int_mode_choise != '5' && int_mode_choise != '6');
  28.                 switch (int_mode_choise) {
  29.                     case '1': { // map
  30.                         tree<int> *tree = new tree<int>;
  31.                         tree->set_tree();
  32.                         cout << "Введите число для преобразований: " << endl;
  33.                         int for_map; cin >> for_map;
  34.                         tree->map(for_map);
  35.                         tree->print_by_levels();
  36.                         break;
  37.                     }
  38.                     case '2': { // where
  39.                        
  40.                         tree<int> *tree = new tree<int>;
  41.                         tree<int> *int_tree = new tree<int>;
  42.                         tree->set_tree();
  43.                         tree->where(res_tree);
  44.                         res_tree->rootRightLeft_print();
  45.                         res_tree->leftRootRight_print();
  46.                         res_tree->print_by_levels();
  47.                         break;
  48.                    
  49.                     }
  50.                     case '3': { // слияние
  51.                         cout << "Первое дерево для слияния:" << endl;
  52.                         tree<int> *first_tree = new tree<int>;
  53.                         first_tree->set_tree();
  54.                         cout << "Второе дерево для слияния:" << endl;
  55.                         tree<int> *second_tree = new tree<int>;
  56.                         second_tree->set_tree();
  57.                         second_tree->merge_trees(first_tree);
  58.                         cout << "Результат: " << endl;
  59.                         first_tree->rootRightLeft_print();
  60.                         first_tree->leftRootRight_print();
  61.                         first_tree->print_by_levels();
  62.                         break;
  63.                     }
  64.                     case '4': { // извлечение поддерева
  65.                         tree<int> *tree = new tree<int>;
  66.                         tree<int> *res_tree = new tree<int>;
  67.                         tree->set_tree();
  68.                         cout << "Введите целое число: ";
  69.                         int k; cin >> k;
  70.                         tree->subtree_extraction(k, res_tree);
  71.                         cout << "Результат извлечения поддерева по заданному элементу: " << endl;
  72.                         res_tree->rootRightLeft_print();
  73.                         res_tree->leftRootRight_print();
  74.                         res_tree->print_by_levels();
  75.                         break;
  76.                     }
  77.                     case '5': { // поиск на вхождение поддерева
  78.                         tree<int> *tree = new tree<int>;
  79.                         cout << "Введите дерево " << endl;
  80.                         tree->set_tree();
  81.                         tree<int> *subtree = new tree<int>;
  82.                         cout << "Введите поддерево " << endl;
  83.                         subtree->set_tree();
  84.                         if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
  85.                         else cout << "Поддерево не найдено в дереве" << endl;
  86.                         break;
  87.                     }
  88.                     case '6': { // поиск на вхождение элемента
  89.                         tree<int> *tree = new tree<int>;
  90.                         tree->set_tree();
  91.                         cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
  92.                         int k; cin >> k;
  93.                         if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
  94.                         else cout << "Строка не найдена в дереве" << endl;
  95.                         break;
  96.                     }
  97.                         break;
  98.                 }
  99.                 break;
  100.             }
  101.             case '2': {
  102.                 cout << "Выбран режим работы с числами с плавающей запятой " << endl;
  103.                 cout << "Доступны следующие функции " << endl;
  104.                 cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
  105.                 char double_mode_choise;
  106.                 do { cin >> double_mode_choise; } while (double_mode_choise != '1' && double_mode_choise != '2' && double_mode_choise != '3' && double_mode_choise != '4' && double_mode_choise != '5' && double_mode_choise != '6');
  107.                 switch (double_mode_choise) {
  108.                     case '1': { // map
  109.                         tree<double> *tree = new tree<double>;
  110.                         tree->set_tree();
  111.                         cout << "Введите число для преобразований: " << endl;
  112.                         double for_map; cin >> for_map;
  113.                         tree->map(for_map);
  114.                         tree->print_by_levels();
  115.                         break;
  116.                     }
  117.                     case '2': { // where
  118.                        
  119.                         tree<double> *tree = new tree<double>;
  120.                         tree<double> *res_tree = new tree<double>;
  121.                         tree->set_tree();
  122.                         tree->where(res_tree);
  123.                         res_tree->rootRightLeft_print();
  124.                         res_tree->leftRootRight_print();
  125.                         res_tree->print_by_levels();
  126.                         break;
  127.                    
  128.                     }
  129.                     case '3': { // слияние
  130.                         cout << "Первое дерево для слияния:" << endl;
  131.                         tree<double> *first_tree = new tree<double>;
  132.                         first_tree->set_tree();
  133.                         cout << "Второе дерево для слияния:" << endl;
  134.                         tree<double> *second_tree = new tree<double>;
  135.                         second_tree->set_tree();
  136.                         second_tree->merge_trees(first_tree);
  137.                         cout << "Результат: " << endl;
  138.                         first_tree->rootRightLeft_print();
  139.                         first_tree->leftRootRight_print();
  140.                         first_tree->print_by_levels();
  141.                         break;
  142.                     }
  143.                     case '4': { // извлечение поддерева
  144.                         tree<double> *tree = new tree<double>;
  145.                         tree<double> *res_tree = new tree<double>;
  146.                         tree->set_tree();
  147.                         cout << "Введите целое число: ";
  148.                         double k; cin >> k;
  149.                         tree->subtree_extraction(k, res_tree);
  150.                         cout << "Результат извлечения поддерева по заданному элементу: " << endl;
  151.                         res_tree->rootRightLeft_print();
  152.                         res_tree->leftRootRight_print();
  153.                         res_tree->print_by_levels();
  154.                         break;
  155.                     }
  156.                     case '5': { // поиск на вхождение поддерева
  157.                         tree<double> *tree = new tree<double>;
  158.                         cout << "Введите дерево " << endl;
  159.                         tree->set_tree();
  160.                         tree<double> *subtree = new tree<double>;
  161.                         cout << "Введите поддерево " << endl;
  162.                         subtree->set_tree();
  163.                         if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
  164.                         else cout << "Поддерево не найдено в дереве" << endl;
  165.                         break;
  166.                     }
  167.                     case '6': { // поиск на вхождение элемента
  168.                         tree<double> *tree = new tree<double>;
  169.                         tree->set_tree();
  170.                         cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
  171.                         double k; cin >> k;
  172.                         if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
  173.                         else cout << "Строка не найдена в дереве" << endl;
  174.                         break;
  175.                     }
  176.                         break;
  177.                 }
  178.                 break;
  179.             }
  180.             case '3': {
  181.                 cout << "Выбран режим работы со строками " << endl;
  182.                 cout << "Доступны следующие функции " << endl;
  183.                 cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
  184.                 char  string_mode_choise;
  185.                 do { cin >> string_mode_choise; } while (string_mode_choise != '1' && string_mode_choise != '2' && string_mode_choise != '3' && string_mode_choise != '4' && string_mode_choise != '5' && string_mode_choise != '6');
  186.                 switch (string_mode_choise) {
  187.                     case '1': { // map
  188.                         tree<string> *tree = new tree<string>;
  189.                         tree->set_tree();
  190.                         cout << "Введите число для преобразований: " << endl;
  191.                         string for_map; cin >> for_map;
  192.                         tree->map(for_map);
  193.                         tree->print_by_levels();
  194.                         break;
  195.                     }
  196.                     case '2': { // where
  197.                        
  198.                         tree<string> *tree = new tree<string>;
  199.                         tree<string> *int_tree = new tree<string>;
  200.                         tree->set_tree();
  201.                         tree->where(res_tree);
  202.                         res_tree->rootRightLeft_print();
  203.                         res_tree->leftRootRight_print();
  204.                         res_tree->print_by_levels();
  205.                         break;
  206.                    
  207.                     }
  208.                     case '3': { // слияние
  209.                         cout << "Первое дерево для слияния:" << endl;
  210.                         tree<string> *first_tree = new tree<string>;
  211.                         first_tree->set_tree();
  212.                         cout << "Второе дерево для слияния:" << endl;
  213.                         tree<string> *second_tree = new tree<string>;
  214.                         second_tree->set_tree();
  215.                         second_tree->merge_trees(first_tree);
  216.                         cout << "Результат: " << endl;
  217.                         first_tree->rootRightLeft_print();
  218.                         first_tree->leftRootRight_print();
  219.                         first_tree->print_by_levels();
  220.                         break;
  221.                     }
  222.                     case '4': { // извлечение поддерева
  223.                         tree<string> *tree = new tree<string>;
  224.                         tree<string> *res_tree = new tree<string>;
  225.                         tree->set_tree();
  226.                         cout << "Введите целое число: ";
  227.                         string k; cin >> k;
  228.                         tree->subtree_extraction(k, res_tree);
  229.                         cout << "Результат извлечения поддерева по заданному элементу: " << endl;
  230.                         res_tree->rootRightLeft_print();
  231.                         res_tree->leftRootRight_print();
  232.                         res_tree->print_by_levels();
  233.                         break;
  234.                     }
  235.                     case '5': { // поиск на вхождение поддерева
  236.                         tree<string> *tree = new tree<string>;
  237.                         cout << "Введите дерево " << endl;
  238.                         tree->set_tree();
  239.                         tree<string> *subtree = new tree<string>;
  240.                         cout << "Введите поддерево " << endl;
  241.                         subtree->set_tree();
  242.                         if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
  243.                         else cout << "Поддерево не найдено в дереве" << endl;
  244.                         break;
  245.                     }
  246.                     case '6': { // поиск на вхождение элемента
  247.                         tree<string> *tree = new tree<string>;
  248.                         tree->set_tree();
  249.                         cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
  250.                         string k; cin >> k;
  251.                         if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
  252.                         else cout << "Строка не найдена в дереве" << endl;
  253.                         break;
  254.                     }
  255.                         break;
  256.                 }
  257.                 break;
  258.             }
  259.             case '4': {
  260.                 return 1;
  261.             }
  262.                
  263.            
  264.         }
  265.     }    
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement