Advertisement
amsavchenko

Untitled

May 16th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.90 KB | None | 0 0
  1. int main() {
  2.  
  3.     while (1) {
  4.         cout << "Доступны 3 режима работы: с целыми числами, с числами с плавающей запятой и со строками. Выберите, чтобы продолжить: " << endl;
  5.         cout << "1 - целые числа \n2 - числа с плавающей точкой\n3 - строки\n4 - закончить работу" << endl;
  6.         char mode_choise;
  7.         do { cin >> mode_choise; } while (mode_choise != '1' && mode_choise != '2' && mode_choise != '3' && mode_choise != '4');
  8.    
  9.         switch (mode_choise) {
  10.             case '1': {
  11.                 cout << "Выбран режим работы с целыми числами " << endl;
  12.                 cout << "Доступны следующие функции " << endl;
  13.                 cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
  14.                 char int_mode_choise;
  15.                 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');
  16.                 switch (int_mode_choise) {
  17.                     case '1': { // map
  18.                         tree<int> *int_tree = new tree<int>;
  19.                         int_tree->set_tree();
  20.                         cout << "Введите строку для преобразований: " << endl;
  21.                         int for_map; cin >> for_map;
  22.                         int_tree->map(for_map);
  23.                         int_tree->print_by_levels();
  24.                         break;
  25.                     }
  26.                     case '2': { // where
  27.                        
  28.                         tree<int> *int_tree = new tree<int>;
  29.                         tree<int> *res_int_tree = new tree<int>;
  30.                         int_tree->set_tree();
  31.                         int_tree->where(res_int_tree);
  32.                         res_int_tree->rootRightLeft_print();
  33.                         res_int_tree->leftRootRight_print();
  34.                         res_int_tree->print_by_levels();
  35.                         break;
  36.                    
  37.                     }
  38.                     case '3': { // слияние
  39.                         cout << "Первое дерево для слияния:" << endl;
  40.                         tree<int> *first_int_tree = new tree<int>;
  41.                         first_int_tree->set_tree();
  42.                         cout << "Второе дерево для слияния:" << endl;
  43.                         tree<int> *second_int_tree = new tree<int>;
  44.                         second_int_tree->set_tree();
  45.                         second_int_tree->merge_trees(first_int_tree);
  46.                         cout << "Результат: " << endl;
  47.                         first_int_tree->rootRightLeft_print();
  48.                         first_int_tree->leftRootRight_print();
  49.                         first_int_tree->print_by_levels();
  50.                         break;
  51.                     }
  52.                     case '4': { // извлечение поддерева
  53.                         tree<int> *int_tree = new tree<int>;
  54.                         tree<int> *res_int_tree = new tree<int>;
  55.                         int_tree->set_tree();
  56.                         cout << "Введите целое число: ";
  57.                         int k; cin >> k;
  58.                         int_tree->subtree_extraction(k, res_int_tree);
  59.                         cout << "Результат извлечения поддерева по заданному элементу: " << endl;
  60.                         res_int_tree->rootRightLeft_print();
  61.                         res_int_tree->leftRootRight_print();
  62.                         res_int_tree->print_by_levels();
  63.                         break;
  64.                     }
  65.                     case '5': { // поиск на вхождение поддерева
  66.                         tree<int> *int_tree = new tree<int>;
  67.                         cout << "Введите дерево " << endl;
  68.                         int_tree->set_tree();
  69.                         tree<int> *int_subtree = new tree<int>;
  70.                         cout << "Введите поддерево " << endl;
  71.                         int_subtree->set_tree();
  72.                         if (int_tree->if_tree_contain(int_subtree)) cout << "Поддерево содержится в дереве" << endl;
  73.                         else cout << "Поддерево не найдено в дереве" << endl;
  74.                         break;
  75.                     }
  76.                     case '6': { // поиск на вхождение элемента
  77.                         tree<int> *int_tree = new tree<int>;
  78.                         int_tree->set_tree();
  79.                         cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
  80.                         int k; cin >> k;
  81.                         if (int_tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
  82.                         else cout << "Строка не найдена в дереве" << endl;
  83.                         break;
  84.                     }
  85.                         break;
  86.                 }
  87.                 break;
  88.             }
  89.             case '2': {
  90.                 void *ptr[] = {(void*)f1, (void*)f2, (void*)f3, (void*)f4, (void*)f5};
  91.                 cout << "Выбран режим работы с функциями " << endl;
  92.                 cout << "Доступны следующие функции для реализации" << endl;
  93.                 cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
  94.                 char func_mode_choise;
  95.                 do { cin >> func_mode_choise; } while (func_mode_choise != '1' && func_mode_choise != '2' && func_mode_choise != '3' && func_mode_choise != '4' && func_mode_choise != '5' && func_mode_choise != '6');
  96.                 switch (func_mode_choise) {
  97.                     case '1': { // map
  98.                         cout << "Функция map преобразует все элементы дерева в функцию, выбранную пользователем\n\n";
  99.                         tree<void*> *func_tree = new tree<void*>;
  100.                         func_tree->set_function_tree(ptr);
  101.                         cout << "Введите функцию для преобразований: " << endl;
  102.                         int func_number;
  103.                        
  104.                         do {
  105.                             cin >> func_number;
  106.                         } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
  107.                         void *for_map = ptr[func_number-1];
  108.                         func_tree->map(for_map);
  109.                         func_tree->print_by_levels();
  110.                         func_tree->print_value_of_function();
  111.                         break;
  112.                     }
  113.                     case '2': { // where
  114.                         cout << "Функция where вернёт дерево, состоящее из функций исходного, значение которых от x=5 меньше 10\n\n";
  115.                         tree<void*> *func_tree = new tree<void*>;
  116.                         tree<void*> *res_func_tree = new tree<void*>;
  117.                         func_tree->set_function_tree(ptr);
  118.                         func_tree->where(res_func_tree);
  119.                         res_func_tree->print_by_levels();
  120.                         res_func_tree->print_value_of_function();
  121.                         break;
  122.                     }
  123.                     case '3': { // merge
  124.                         cout << "Первое дерево для слияния:" << endl;
  125.                         tree<void*> *first_functional_tree = new tree<void*>;
  126.                         first_functional_tree->set_function_tree(ptr);
  127.                         cout << "Второе дерево для слияния:" << endl;
  128.                         tree<void*> *second_functional_tree = new tree<void*>;
  129.                         second_functional_tree->set_function_tree(ptr);
  130.                         second_functional_tree->merge_trees(first_functional_tree);
  131.                         cout << "Результат: " << endl;
  132.                         first_functional_tree->print_by_levels();
  133.                         first_functional_tree->print_value_of_function();
  134.                         break;
  135.                     }
  136.                     case '4': { // извлечение поддерева
  137.                         tree<void*> *functional_tree = new tree<void*>;
  138.                         tree<void*> *res_functional_tree = new tree<void*>;
  139.                         functional_tree->set_function_tree(ptr);
  140.                         cout << "Выберите функцию для извлечения: " << endl;
  141.                         int func_number;
  142.                         do {
  143.                             cin >> func_number;
  144.                         } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
  145.                         void *func = ptr[func_number-1];
  146.                         functional_tree->subtree_extraction(func, res_functional_tree);
  147.                         res_functional_tree->print_by_levels();
  148.                         res_functional_tree->print_value_of_function();
  149.                         break;
  150.                     }
  151.                     case '5': { // поиск на вхождение поддерева
  152.                         tree<void*> *func_tree = new tree<void*>;
  153.                         cout << "Введите дерево " << endl;
  154.                         func_tree->set_function_tree(ptr);
  155.                         tree<void*> *func_subtree = new tree<void*>;
  156.                         cout << "Введите поддерево " << endl;
  157.                         func_subtree->set_function_tree(ptr);
  158.                         if (func_tree->if_tree_contain(func_subtree)) cout << "Поддерево содержится в дереве" << endl;
  159.                         else cout << "Поддерево не найдено в дереве" << endl;
  160.                         break;
  161.                     }
  162.                     case '6': { // поиск на вхождение элемента
  163.                         tree<void*> *func_tree = new tree<void*>;
  164.                         func_tree->set_function_tree(ptr);
  165.                         cout << "Выберите функцию, для которой надо проверить, содержится ли она в дереве: ";
  166.                         int func_number;
  167.                         do {
  168.                             cin >> func_number;
  169.                         } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
  170.                         void *func = ptr[func_number-1];
  171.                         if (func_tree->if_element_contain(func)) cout << "Функция содержится в дереве" << endl;
  172.                         else cout << "Функция не найдена в дереве" << endl;
  173.                         break;
  174.                     }
  175.                         break;
  176.                 }
  177.                 break;
  178.             }
  179.             case '3': {
  180.                 return 1;
  181.             }
  182.                
  183.            
  184.         }
  185.     }    
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement