Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Варианты заданий
№ | Условие |
1 | Создать шаблон класса «Стек«. Использовать его при решении задачи $1$ из раздела «Классы». |
2 | Создать шаблон класса «Стек«. Использовать его при решении задачи $7$ из раздела «Динамические структуры данных». |
3 | Создать шаблон класса «Стек«. Использовать его при решении задачи $8$ из раздела «Динамические структуры данных». |
4 | Создать шаблон класса «Однонаправленный линейный список«. Использовать его при решении задачи $1$ из раздела «Динамические структуры данных». |
5 | Создать шаблон класса «Однонаправленный линейный список«. Использовать его при решении задачи $3$ из раздела «Динамические структуры данных». |
6 | Создать шаблон класса «Бинарное дерево«. Использовать его при решении задачи $2$ из раздела «Динамические структуры данных». |
7 | Создать шаблон класса «Бинарное дерево«. Использовать его при решении задачи $4$ из раздела «Динамические структуры данных». |
8 | Создать шаблон класса «Бинарное дерево«. Использовать его для сортировки целых чисел и строк, задаваемых с клавиатуры или из файла. |
9 | Создать шаблон класса «Очередь«. Написать программу, демонстрирующую работу с этим шаблоном для различных типов параметров шаблона. Программа должна содержать меню, позволяющее осуществить проверку всех методов шаблона. |
10 | Создать шаблон класса «Очередь с приоритетами«. При добавлении элемента в такую очередь его номер определяется его приоритетом. Написать программу, демонстрирующую работу с этим шаблоном для различных типов параметров шаблона. Программа должна содержать меню, позволяющее осуществить проверку всех методов шаблона. |
11 | Создать шаблон класса для работы с комплексными числами (см. вариант $5$ из раздела «Классы»). Написать программу, использующую этот шаблон, задавая вещественную и мнимую части как числами типа double, так и целыми числами. |
12 | Параметризовать класс одномерных массивов чисел (см. вариант $8$ из раздела «Классы»). Написать программу, использующую созданный шаблон для создания массивов различного типа. |
13 | Параметризовать класс, описанный в задаче $12$ из раздела «Классы». Написать программу, использующую созданный шаблон для создания матриц различного типа. |
14 | Описать шаблон класса «Множество«, позволяющий выполнять основные операции — добавление и удаление элемента, пересечение, объединение и разность множеств. Написать программу, демонстрирующую работу с этим шаблоном для различных типов данных. |
15 | Создать шаблон класса «Однонаправленный кольцевой список«. Использовать его при решении задачи $5$ из раздела «Динамические структуры данных». |
16 | Создать шаблон класса «Двунаправленный кольцевой список«. Использовать его при решении задачи $6$ из раздела «Динамические структуры данных». |
17 | Создать шаблон класса «Однонаправленный линейный список указателей«. Использовать его при решении задачи $11$ из раздела «Динамические структуры данных». |
18 | Создать шаблон класса «Бинарное дерево«. Использовать его при решении задачи $2$ из раздела «Классы». |
19 | Создать шаблон класса «Бинарное дерево«. Использовать его при решении задачи $18$ из раздела «Динамические структуры данных». |
20 | Создать шаблон класса «Бинарное дерево«, содержащее указатели на элементы данных. Использовать его при решении задачи $20$ из раздела «Динамические структуры данных». |
Образец выполнения (вариант №8)
Условие задачи
Создать шаблон класса «Бинарное дерево«. Использовать его для сортировки целых чисел и строк, задаваемых с клавиатуры или из файла.
Реализация задачи на языке С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #include <iostream> // для консольного ввода-вывода #include <iomanip> // форматированный вывод данных на экран #include <string> // для работы со строками // подключаем стандартное пространство имен using namespace std; // шаблонный класс "Двоичное дерево поиска" template < class T > class BST { private: // приватная сущность "Узел дерева" struct Node { T key; // информационное поле Node* left; // указатель на левое поддерево Node* right; // указатель на правое поддерево }; Node* root; // указатель на вершину дерева // симметричный обход дерева void Print( Node* root) { if( root != nullptr ) { Print( root -> left ); cout << setw( 10 ) << root -> key; Print( root -> right ); } } // создание узла дерева Node* Create_node( const T key ) { Node* new_node = new Node; new_node -> key = key; new_node -> left = new_node -> right = nullptr; return new_node; } // добавление нового узла в дерево void Insert_node( Node* &root, const T key ) { if( root == nullptr ) { root = Create_node( key ); return; } if( key < root -> key ) Insert_node( root -> left, key ); else Insert_node( root -> right , key ); } // удаление всех узлов дерева void Destroy_tree( Node* root ) { if( root != nullptr ) { Destroy_tree( root -> left ); Destroy_tree( root -> right ); delete root; } } public: // открытые интерфейсные функции класса BST( void ) { this -> root = nullptr; } void LKP( void ) { cout << "Узлы дерева: "; Print( this -> root ); cout << endl; } void Insert( const T key ) { Insert_node( this -> root, key ); } void Destroy( void ) { Destroy_tree( this -> root ); this -> root = nullptr; } }; // главная функция программы (точка входа) int main( void ) { setlocale( LC_ALL, "Russian" ); // создаем двоичное дерево целых чисел // добавляем в дерево 10 случайных чисел и выводим их в отсортированном виде (в строку) const int N = 10; BST< int > bst_int; for( int i = 1; i <= N; i++ ) bst_int.Insert( rand() % 21 - 10 ); bst_int.LKP(); bst_int.Destroy(); // создаем двоичное дерево строк // добавляем в дерево 10 строк и выводим их в отсортированном виде (лексикографическом) string words[ N ] = { "hello", "apple", "Mirrow", "zorro", "hell", "jaguar", "jam", "milk", "bio", "lamp" }; BST< string > bst_string; for( int i = 0; i < N; i++ ) bst_string.Insert( words[ i ] ); bst_string.LKP(); bst_string.Destroy(); // задержка программы, чтобы у пользователя была возможность просмотреть результат cout << endl << endl; return EXIT_SUCCESS; } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий