Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void set_tree () {
- cout << "Введите количество элементов в дереве: ";
- int amount_of_elements;
- do {cin >> amount_of_elements; } while (amount_of_elements < 1);
- cout << "Введите " << amount_of_elements << "элементов: " << endl;
- for (int i = 0; i < amount_of_elements; i ++) {
- cout << " " << i + 1 << ": " ;
- T key; cin >> key;
- this->insert(key);
- }
- }
- 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> *tree = new tree<int>;
- tree->set_tree();
- cout << "Введите число для преобразований: " << endl;
- int for_map; cin >> for_map;
- tree->map(for_map);
- tree->print_by_levels();
- break;
- }
- case '2': { // where
- tree<int> *tree = new tree<int>;
- tree<int> *int_tree = new tree<int>;
- tree->set_tree();
- tree->where(res_tree);
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '3': { // слияние
- cout << "Первое дерево для слияния:" << endl;
- tree<int> *first_tree = new tree<int>;
- first_tree->set_tree();
- cout << "Второе дерево для слияния:" << endl;
- tree<int> *second_tree = new tree<int>;
- second_tree->set_tree();
- second_tree->merge_trees(first_tree);
- cout << "Результат: " << endl;
- first_tree->rootRightLeft_print();
- first_tree->leftRootRight_print();
- first_tree->print_by_levels();
- break;
- }
- case '4': { // извлечение поддерева
- tree<int> *tree = new tree<int>;
- tree<int> *res_tree = new tree<int>;
- tree->set_tree();
- cout << "Введите целое число: ";
- int k; cin >> k;
- tree->subtree_extraction(k, res_tree);
- cout << "Результат извлечения поддерева по заданному элементу: " << endl;
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<int> *tree = new tree<int>;
- cout << "Введите дерево " << endl;
- tree->set_tree();
- tree<int> *subtree = new tree<int>;
- cout << "Введите поддерево " << endl;
- subtree->set_tree();
- if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<int> *tree = new tree<int>;
- tree->set_tree();
- cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
- int k; cin >> k;
- if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
- else cout << "Строка не найдена в дереве" << endl;
- break;
- }
- break;
- }
- break;
- }
- case '2': {
- cout << "Выбран режим работы с числами с плавающей запятой " << endl;
- cout << "Доступны следующие функции " << endl;
- cout << " 1 - map\n 2 - where\n 3 - слияние\n 4 - извлечение поддерева по заданному элементу\n 5 - поиск на вхождение поддерева\n 6 - поиск элемента на вхождение " << endl;
- char double_mode_choise;
- 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');
- switch (double_mode_choise) {
- case '1': { // map
- tree<double> *tree = new tree<double>;
- tree->set_tree();
- cout << "Введите число для преобразований: " << endl;
- double for_map; cin >> for_map;
- tree->map(for_map);
- tree->print_by_levels();
- break;
- }
- case '2': { // where
- tree<double> *tree = new tree<double>;
- tree<double> *res_tree = new tree<double>;
- tree->set_tree();
- tree->where(res_tree);
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '3': { // слияние
- cout << "Первое дерево для слияния:" << endl;
- tree<double> *first_tree = new tree<double>;
- first_tree->set_tree();
- cout << "Второе дерево для слияния:" << endl;
- tree<double> *second_tree = new tree<double>;
- second_tree->set_tree();
- second_tree->merge_trees(first_tree);
- cout << "Результат: " << endl;
- first_tree->rootRightLeft_print();
- first_tree->leftRootRight_print();
- first_tree->print_by_levels();
- break;
- }
- case '4': { // извлечение поддерева
- tree<double> *tree = new tree<double>;
- tree<double> *res_tree = new tree<double>;
- tree->set_tree();
- cout << "Введите целое число: ";
- double k; cin >> k;
- tree->subtree_extraction(k, res_tree);
- cout << "Результат извлечения поддерева по заданному элементу: " << endl;
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<double> *tree = new tree<double>;
- cout << "Введите дерево " << endl;
- tree->set_tree();
- tree<double> *subtree = new tree<double>;
- cout << "Введите поддерево " << endl;
- subtree->set_tree();
- if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<double> *tree = new tree<double>;
- tree->set_tree();
- cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
- double k; cin >> k;
- if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
- else cout << "Строка не найдена в дереве" << endl;
- break;
- }
- break;
- }
- break;
- }
- case '3': {
- 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
- tree<string> *tree = new tree<string>;
- tree->set_tree();
- cout << "Введите число для преобразований: " << endl;
- string for_map; cin >> for_map;
- tree->map(for_map);
- tree->print_by_levels();
- break;
- }
- case '2': { // where
- tree<string> *tree = new tree<string>;
- tree<string> *int_tree = new tree<string>;
- tree->set_tree();
- tree->where(res_tree);
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '3': { // слияние
- cout << "Первое дерево для слияния:" << endl;
- tree<string> *first_tree = new tree<string>;
- first_tree->set_tree();
- cout << "Второе дерево для слияния:" << endl;
- tree<string> *second_tree = new tree<string>;
- second_tree->set_tree();
- second_tree->merge_trees(first_tree);
- cout << "Результат: " << endl;
- first_tree->rootRightLeft_print();
- first_tree->leftRootRight_print();
- first_tree->print_by_levels();
- break;
- }
- case '4': { // извлечение поддерева
- tree<string> *tree = new tree<string>;
- tree<string> *res_tree = new tree<string>;
- tree->set_tree();
- cout << "Введите целое число: ";
- string k; cin >> k;
- tree->subtree_extraction(k, res_tree);
- cout << "Результат извлечения поддерева по заданному элементу: " << endl;
- res_tree->rootRightLeft_print();
- res_tree->leftRootRight_print();
- res_tree->print_by_levels();
- break;
- }
- case '5': { // поиск на вхождение поддерева
- tree<string> *tree = new tree<string>;
- cout << "Введите дерево " << endl;
- tree->set_tree();
- tree<string> *subtree = new tree<string>;
- cout << "Введите поддерево " << endl;
- subtree->set_tree();
- if (tree->if_tree_contain(subtree)) cout << "Поддерево содержится в дереве" << endl;
- else cout << "Поддерево не найдено в дереве" << endl;
- break;
- }
- case '6': { // поиск на вхождение элемента
- tree<string> *tree = new tree<string>;
- tree->set_tree();
- cout << "Введите строку, для которой надо проверить, содержится ли она в дереве: ";
- string k; cin >> k;
- if (tree->if_element_contain(k)) cout << "Строка содержится в дереве" << endl;
- else cout << "Строка не найдена в дереве" << endl;
- break;
- }
- break;
- }
- break;
- }
- case '4': {
- return 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement