Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main() {
- while (1) {
- cout << "Доступны 3 режима работы: с целыми числами, с числами с плавающей запятой и со строками. Выберите, чтобы продолжить: " << endl;
- cout << "1 - целые числа \n2 - числа с плавающей точкой\n3 - строки\n4 - закончить работу" << endl;
- char mode_choise;
- do { cin >> mode_choise; } while (mode_choise != '1' && mode_choise != '2' && mode_choise != '3' && mode_choise != '4');
- switch (mode_choise) {
- case '1': {
- cout << "Выбран режим работы с целыми числами " << endl;
- cout << "Доступны следующие функции " << endl;
- cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
- char int_mode_choise;
- 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');
- switch (int_mode_choise) {
- case '1': { // map
- tree<int> *int_tree = new tree<int>;
- int_tree->set_tree();
- cout << "Введите строку для преобразований: " << endl;
- int for_map; cin >> for_map;
- int_tree->map(for_map);
- int_tree->print_by_levels();
- break;
- }
- case '2': { // where
- tree<int> *int_tree = new tree<int>;
- tree<int> *res_int_tree = new tree<int>;
- int_tree->set_tree();
- int_tree->where(res_int_tree);
- res_int_tree->rootRightLeft_print();
- res_int_tree->leftRootRight_print();
- res_int_tree->print_by_levels();
- break;
- }
- case '3': { // слияние
- cout << "Первое дерево для слияния:" << endl;
- tree<int> *first_int_tree = new tree<int>;
- first_int_tree->set_tree();
- cout << "Второе дерево для слияния:" << endl;
- tree<int> *second_int_tree = new tree<int>;
- second_int_tree->set_tree();
- second_int_tree->merge_trees(first_int_tree);
- cout << "Результат: " << endl;
- first_int_tree->rootRightLeft_print();
- first_int_tree->leftRootRight_print();
- first_int_tree->print_by_levels();
- break;
- }
- case '4': { // извлечение поддерева
- tree<int> *int_tree = new tree<int>;
- tree<int> *res_int_tree = new tree<int>;
- int_tree->set_tree();
- cout << "Введите целое число: ";
- int k; cin >> k;
- int_tree->subtree_extraction(k, res_int_tree);
- cout << "Результат извлечения поддерева по заданному элементу: " << endl;
- res_int_tree->rootRightLeft_print();
- res_int_tree->leftRootRight_print();
- res_int_tree->print_by_levels();
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<int> *int_tree = new tree<int>;
- cout << "Введите дерево " << endl;
- int_tree->set_tree();
- tree<int> *int_subtree = new tree<int>;
- cout << "Введите поддерево " << endl;
- int_subtree->set_tree();
- if (int_tree->if_tree_contain(int_subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<int> *int_tree = new tree<int>;
- int_tree->set_tree();
- cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
- int k; cin >> k;
- if (int_tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
- else cout << "Строка не найдена в дереве" << endl;
- break;
- }
- break;
- }
- break;
- }
- case '2': {
- void *ptr[] = {(void*)f1, (void*)f2, (void*)f3, (void*)f4, (void*)f5};
- cout << "Выбран режим работы с функциями " << endl;
- cout << "Доступны следующие функции для реализации" << endl;
- cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
- char func_mode_choise;
- 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');
- switch (func_mode_choise) {
- case '1': { // map
- cout << "Функция map преобразует все элементы дерева в функцию, выбранную пользователем\n\n";
- tree<void*> *func_tree = new tree<void*>;
- func_tree->set_function_tree(ptr);
- cout << "Введите функцию для преобразований: " << endl;
- int func_number;
- do {
- cin >> func_number;
- } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
- void *for_map = ptr[func_number-1];
- func_tree->map(for_map);
- func_tree->print_by_levels();
- func_tree->print_value_of_function();
- break;
- }
- case '2': { // where
- cout << "Функция where вернёт дерево, состоящее из функций исходного, значение которых от x=5 меньше 10\n\n";
- tree<void*> *func_tree = new tree<void*>;
- tree<void*> *res_func_tree = new tree<void*>;
- func_tree->set_function_tree(ptr);
- func_tree->where(res_func_tree);
- res_func_tree->print_by_levels();
- res_func_tree->print_value_of_function();
- break;
- }
- case '3': { // merge
- cout << "Первое дерево для слияния:" << endl;
- tree<void*> *first_functional_tree = new tree<void*>;
- first_functional_tree->set_function_tree(ptr);
- cout << "Второе дерево для слияния:" << endl;
- tree<void*> *second_functional_tree = new tree<void*>;
- second_functional_tree->set_function_tree(ptr);
- second_functional_tree->merge_trees(first_functional_tree);
- cout << "Результат: " << endl;
- first_functional_tree->print_by_levels();
- first_functional_tree->print_value_of_function();
- break;
- }
- case '4': { // извлечение поддерева
- tree<void*> *functional_tree = new tree<void*>;
- tree<void*> *res_functional_tree = new tree<void*>;
- functional_tree->set_function_tree(ptr);
- cout << "Выберите функцию для извлечения: " << endl;
- int func_number;
- do {
- cin >> func_number;
- } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
- void *func = ptr[func_number-1];
- functional_tree->subtree_extraction(func, res_functional_tree);
- res_functional_tree->print_by_levels();
- res_functional_tree->print_value_of_function();
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<void*> *func_tree = new tree<void*>;
- cout << "Введите дерево " << endl;
- func_tree->set_function_tree(ptr);
- tree<void*> *func_subtree = new tree<void*>;
- cout << "Введите поддерево " << endl;
- func_subtree->set_function_tree(ptr);
- if (func_tree->if_tree_contain(func_subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<void*> *func_tree = new tree<void*>;
- func_tree->set_function_tree(ptr);
- cout << "Выберите функцию, для которой надо проверить, содержится ли она в дереве: ";
- int func_number;
- do {
- cin >> func_number;
- } while (func_number != 1 && func_number != 2 && func_number != 3 && func_number != 4 && func_number != 5);
- void *func = ptr[func_number-1];
- if (func_tree->if_element_contain(func)) cout << "Функция содержится в дереве" << endl;
- else cout << "Функция не найдена в дереве" << endl;
- break;
- }
- break;
- }
- break;
- }
- case '3': {
- return 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement