Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main() {
- test_all_functions();
- while (1) {
- cout << "\nДоступны 2 режима работы: со строками и функциями. Выберите, чтобы продолжить: " << endl;
- cout << "1 - строки \n2 - функции\n3 - закончить работу " << endl;
- char mode_choise;
- do { cin >> mode_choise; } while (mode_choise != '1' && mode_choise != '2' && mode_choise != '3');
- 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 string_mode_choise;
- 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');
- switch (string_mode_choise) {
- case '1': { // map
- cout << "Функция map преобразует все элементы дерева в строку, введенную пользователем\n\n";
- tree<string> *string_tree = new tree<string>;
- string_tree->set_tree();
- cout << "Введите строку для преобразований: " << endl;
- string for_map; cin >> for_map;
- string_tree->map(for_map);
- string_tree->print_by_levels();
- delete string_tree;
- break;
- }
- case '2': { // where
- cout << "Функция where вернёт дерево, состоящее из строк исходного, длина которых меньше 5\n\n";
- tree<string> *string_tree = new tree<string>;
- tree<string> *res_string_tree = new tree<string>;
- string_tree->set_tree();
- string_tree->where(res_string_tree);
- if (res_string_tree->getroot() == nullptr) cout << "Элементов, удовлетворяющих условию, не найдено" << endl;
- else {
- res_string_tree->rootRightLeft_print();
- res_string_tree->leftRootRight_print();
- res_string_tree->print_by_levels();
- }
- delete string_tree;
- delete res_string_tree;
- break;
- }
- case '3': { // слияние
- cout << "Первое дерево для слияния:" << endl;
- tree<string> *first_string_tree = new tree<string>;
- first_string_tree->set_tree();
- cout << "Второе дерево для слияния:" << endl;
- tree<string> *second_string_tree = new tree<string>;
- second_string_tree->set_tree();
- second_string_tree->merge_trees(first_string_tree);
- cout << "Результат: " << endl;
- first_string_tree->rootRightLeft_print();
- first_string_tree->leftRootRight_print();
- first_string_tree->print_by_levels();
- delete first_string_tree;
- delete second_string_tree;
- break;
- }
- case '4': { // извлечение поддерева
- tree<string> *string_tree = new tree<string>;
- tree<string> *res_string_tree = new tree<string>;
- string_tree->set_tree();
- cout << "Введите строку: ";
- string str; cin >> str;
- string_tree->subtree_extraction(str, res_string_tree);
- cout << "Результат извлечения поддерева по заданному элементу: " << endl;
- if (res_string_tree->getroot() == nullptr) cout << "Поддерева не существует" << endl;
- else {
- res_string_tree->rootRightLeft_print();
- res_string_tree->leftRootRight_print();
- res_string_tree->print_by_levels();
- }
- delete string_tree;
- delete res_string_tree;
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<string> *string_tree = new tree<string>;
- cout << "Введите дерево " << endl;
- string_tree->set_tree();
- tree<string> *string_subtree = new tree<string>;
- cout << "Введите поддерево " << endl;
- string_subtree->set_tree();
- if (string_tree->if_tree_contain(string_subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- delete string_tree;
- delete string_subtree;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<string> *string_tree = new tree<string>;
- string_tree->set_tree();
- cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
- string str; cin >> str;
- if (string_tree->if_element_contain(str)) cout << "Строка содержится в дереве" << endl;
- else cout << "Строка не найдена в дереве" << endl;
- delete string_tree;
- 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();
- delete func_tree;
- 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);
- if (res_func_tree->getroot() == nullptr) cout << "Элементов, удовлетворяющих условию, не найдено" << endl;
- else {
- res_func_tree->print_by_levels();
- res_func_tree->print_value_of_function();
- }
- delete func_tree;
- delete res_func_tree;
- 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();
- delete first_functional_tree;
- delete second_functional_tree;
- 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);
- if (functional_tree->getroot() == nullptr) cout << "Поддерева не найдено" << endl;
- //else {
- res_functional_tree->print_by_levels();
- res_functional_tree->print_value_of_function();
- //}
- delete functional_tree;
- delete res_functional_tree;
- 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;
- delete func_tree;
- delete func_subtree;
- 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;
- delete func_tree;
- break;
- }
- break;
- }
- break;
- }
- case '3': {
- cout << "Выход из программы " << endl;
- return 0;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement