Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СТА (лекции+лабы) / СТА Лаба 3.docx
Скачиваний:
51
Добавлен:
16.03.2016
Размер:
66.08 Кб
Скачать

Варианты базового уровня

Вариант №1:

Используя базовую структуру в виде массива меток и массива родительских индексов, реализуйте основные операции АТД “дерево” с метками в виде строк. Реализация должна содержать типовые операции создания, уничтожения, ROOT, NODE_LABEL, PARENT, LEFTMOST_CHILD, RIGHT_SIBLING, а также прямой, обратный и симметричный обход. Строки должны копироваться в дерево при вставке и корректно уничтожаться. Создайте тестовую программу, активизирующую реализацию всех операций.

Вариант №2:

Используя в качестве базы динамическую структуру узлов дерева с указателями на родителя, левый дочерний узел и правый братский узел, реализуйте основные операции АТД “дерево” с метками в виде строк. Реализация должна содержать типовые операции создания, уничтожения, ROOT, NODE_LABEL, PARENT, LEFTMOST_CHILD, RIGHT_SIBLING, а также прямой, обратный и симметричный обход. Строки должны копироваться в дерево при вставке и корректно уничтожаться. Создайте тестовую программу, активизирующую реализацию всех операций.

Вариант №3:

Используя базовую структуру в виде на основе массива меток и списков дочерних узлов, реализуйте основные операции АТД “дерево” с метками в виде строк. Реализация должна содержать типовые операции создания, уничтожения, ROOT, NODE_LABEL, PARENT, LEFTMOST_CHILD, RIGHT_SIBLING, а также прямой, обратный и симметричный обход. Строки должны копироваться в дерево при вставке и корректно уничтожаться. Создайте тестовую программу, активизирующую реализацию всех операций.

Вариант №4:

Пользуясь информацией с сайта cist.kture.kharkov.ua, создайте дерево на основе любой из базовых структур, хранящее информацию об устройстве университета: университет, факультеты, кафедры. Реализуйте прямой обход данного дерева, при котором структура университета распечатывается на консоли в удобном для чтения виде с отступами для каждого из уровней.

Вариант №5:

Реализуйте АТД “множество” для строковых ключей на основе хэш-таблиц с линейным разрешением коллизий (закрытое хэширование). Должны поддерживаться типовые операции создания, уничтожения, очистки, вставки и удаления ключей, определения наличия ключа во множестве. Реализация теоретико-множественных операций не требуется. Строки должны копироваться в дерево при вставке и корректно уничтожаться. Создайте тестовую программу, активизирующую реализацию всех операций.

Вариант №6:

Реализуйте АТД “множество” для строковых ключей на основе хэш-таблиц со связными списками для кластеров (открытое хэширование). Должны поддерживаться типовые операции создания, уничтожения, очистки, вставки и удаления ключей, определения наличия ключа во множестве. Реализация теоретико-множественных операций не требуется. Строки должны копироваться в дерево при вставке и корректно уничтожаться. Создайте тестовую программу, активизирующую реализацию всех операций.

Вариант №7:

Вычисление результата некоторых математических функций, в частности с действительными числами, может занимать существенное время. Часто ход решаемой задачи предполагает интенсивное использование функции на одних и тех же аргументах. В таком случае имеет смысл вычислять значение функции для данного аргумента только один раз, а результат кэшировать, т.е., запоминать в некоторой таблице готовых значений. При повторном запросе вычисления значения функции на одном и том же аргументе вместо тяжеловесного вычисления можно взять готовый подсчитанный при предыдущем вызове результат. Произвольно выберите достаточно сложную функцию, содержащую различные тригонометрические, логарифмические функции в сочетании с различными алгебраическими операциями. Для упрощения, положим, что аргумент-ключ может быть только целым числом. Реализуйте кэширование результатов выбранной функции за счет размещения подсчитанных однажды значений для конкретных аргументов в виде хэш-таблицы фиксированного размера. Ключ – аргумент функции, значение – результат вычисления функции. Продемонстрируйте функциональность при помощи тестовой программы..

Вариант №8:

Напишите программу, которая генерирует 100 тысяч псевдослучайных целых чисел. Поместите одну копию сгенерированных данных в обычный динамический массив, другую - в хэш-таблицу с размером 100 тысяч ячеек, а третью - в хэш-таблицу с размером в 200 тысяч ячеек. При помощи функции clock() из стандартной библиотеки вычислите во сколько раз время поиска произвольного числа отличается между данными тремя структурами. Для достоверности измерения, инициируйте поиск многократно. Приведите теоретическое объяснение полученных экспериментальных результатов. Можно использовать как хэш-таблицы с линейным опробированием, так и со связными списками для сегментов.

Вариант №9:

Воспользовавшись журналом группы, создайте BST в котором в качестве ключей будут выступать фамилии студентов, а в качестве значений - количество защищенных лабораторных работ. Далее в цикле:

  • если пользователь вводит число 0, программа завершается;

  • если пользователь вводит число 1, распечатайте список студентов на консоли в алфавитном порядке фамилий;

  • если пользователь вводит число 2, затем должна быть введена фамилия студента, а программа должна распечатать количество защищенных им лабораторных работ, а если такого студента в дереве нет, напечатать сообщение об ошибке.

Вариант №10:

Напишите программу по простейшему управлению учетными записями пользователей. Если пользователь вводит число 1, программа ожидает ввод двух строк - логин и пароль нового пользователя. Если пользователь вводит число 2, программа также ожидает ввод двух строк - логин и пароль пользователя: если такой логин и пароль уже зарегистрированы, программа выдает на экран приветствующее сообщение (например, “Hello <login>”), если такого логина нет либо пароль неправильный, программа выдает сообщение об ошибке. Если пользователь вводит число 3, программа завершается. При следующем запуске пароли не сохраняются. Важным требованием является отказ от хранения паролей в памяти программы в явном виде, следует сохранить результат хэш-функции на строке-пароле, а не сам пароль. Реализация хранения учетных записей должна быть основана на хэш-таблица любого вида.

Соседние файлы в папке СТА (лекции+лабы)