- •Министерство образования и науки российской федерации
- •Содержание
- •Введение
- •Лабораторная работа № 1. Среда разработки приложений Microsoft Visual Studio .Net 2010
- •Основные сведения
- •Создание консольного приложения
- •Содержание файла «TestProject.Cpp»
- •Содержание файла «stdafx.Cpp»
- •Содержание файла «stdafx.H»
- •Задание на работу
- •Текст II
- •Текст III
- •Содержание отчета
- •Лабораторная работа № 2. Представление данных в эвм
- •Задание на работу
- •Входные данные
- •Пример выполнения задания
- •Классы выделяемых литер
- •Классы выделяемых лексем
- •Диаграмма (граф) переходов
- •Входной файл
- •Выходной файл
- •Содержание отчета
- •Лабораторная работа № 4. Работа со стеком
- •Задание на работу
- •Пример содержимого заголовочного файла lab_stack.H
- •Алгоритмы для реализации атд «Стек» на языке Си
- •Реализация при помощи массива
- •Реализация при помощи связанных структур
- •Содержание отчета
- •Контрольные вопросы для допуска к лабораторной работе
- •Лабораторная работа № 5. Работа с очередью
- •Задание на работу
- •Пример содержимого заголовочного файла lab_queue.H
- •Алгоритмы для реализации атд «Очередь» на языке Си
- •Реализация при помощи массива
- •Реализация при помощи связанных структур
- •Содержание отчета
- •Контрольные вопросы для допуска к лабораторной работе
- •Лабораторная работа № 6. Хеширование
- •Задание на работу
- •Пример индивидуального задания на работу
- •Входные данные
- •Выходные данные
- •Содержание отчета
- •Пример входных данных
- •Краткая теоретическая справка
- •Задача о программисте Пете
- •Входные данные
- •Выходные данные
- •Математическая модель
- •Решение задачи о программисте Пете полным перебором
- •Текст программы
- •Генератор тестовых наборов
- •Текст программы
- •Литература
Лабораторная работа № 6. Хеширование
Целью работы является изучение приемов создания и управления хеш-таблицами, а также методов закрытого и открытого хеширования.
Задание на работу
Изучить способы применения и реализации хеш-функций.
Получить индивидуальное задание. Задание предусматривает реализацию функций, работающих с большими объемами данных. Например, сравнение строк в процессе поиска записи в базе данных.
Написать программу, реализующую индивидуальное задание.
Пример индивидуального задания на работу
Составить алгоритм и программу, реализующие следующие действия над базой данных (БД), использующей для хранения данных закрытое (или открытое) хеширование.
Должны быть реализованы следующие команды:
Код команды |
Команда |
1 |
запись элемента в БД (создание) |
2 |
просмотр содержимого БД |
3 |
поиск элемента в БД |
4 |
удаление элемента БД |
Входные данные для работы программы поступают из файла «input.txt», результат записывается в файл «output.txt».
Входные данные
Первая строка входного файла содержит одно целочисленное значение N, задающее размер массива, используемого для создания базы данных (N<= 100).
Каждая из последующих строк содержит одну команду.
Формат команды: <код команды> <пробел> <элемент данных>.
Элемент данных отсутствует для команды с кодом 2 (просмотр).
Описание каждого элемента данных представляет заключенный в круглые скобки список значений отдельных полей. Разделителем значений полей является символ ; (точка с запятой).
Признаком конца данных является строка, содержащая в первой строке единственное целочисленное значение 0 (ноль).
Выходные данные
Информация, выводимая в выходной файл, зависит от кода команды.
При выполнении команды с кодом 1 (запись элемента) ничего не выводится в выходной файл.
При выполнении команды с кодом 2 (просмотр) выводятся значения, в порядке возрастания номера, только тех элементов массива, в которых хранятся данные. В строке содержатся значения одного элемента массива в следующем формате:
<номер элемента массива> <-> <данные> <-> <первичный ключ>.
При выполнении команды с кодом 3 (поиск) выводится строка следующего формата:
<признак успешности> <-> <данные> <-> <номер элемента массива>
Признак успешности: 0 – элемент не найден, 1 – поиск успешен.
Данные – последовательность полей данных, разделенных пробелами.
Номер элемента массива выводится в случае успешного поиска.
При выполнении команды с кодом 4 (удаление элемента) выводится строка следующего формата:
<признак успешности> <–> <данные> <-> <номер элемента массива>
Признак успешности: 0 – элемент не найден, 1 – поиск успешен.
Данные – последовательность полей данных, разделенных пробелами.
Номер элемента массива выводится в случае успешного удаления.
Содержание отчета
Задание на работу.
Описание используемых функций хеширования.
Обоснование выбора функций хеширования.
Текст программы.
Тестовые данные, иллюстрирующие работу программы
Оценка эффективности алгоритма.
Лабораторная работа № 7. ДЕРЕВЬЯ
Целью работы является изучение основных процедур работы с динамическими структурами, организованными в деревья.
Задание на работу
Изучить способы применения и реализации АВЛ-деревьев.
Получить индивидуальное задание. Задание предусматривает реализацию структуры данных, соответствующей узлу АВЛ-дерева, а также функций для работы с ним (добавление вершины, удаление вершины, поиск, обход дерева).
Написать программу, реализующую индивидуальное задание.
Пример индивидуального задания на работу
Разработать программу, обеспечивающую чтение из входного файла последовательности данных и построение двух бинарных деревьев. Первое дерево строится методом случайной вставки, второе дерево строится с использованием алгоритма построения подравненного АВЛ-дерева.
Должны быть реализованы процедуры обхода дерева в прямом, обратном и симметричном порядке.
Входные данные
Входной файл содержит последовательность элементов данных. Элементы данных разделяются символом : (двоеточие). Описание каждого элемента данных представляет заключенный в круглые скобки список значений отдельных полей. Разделителем значений полей является символ ; (точка с запятой).
Признаком конца данных является символ конец файла.
Выходные данные
Первая строка входного файла содержит текст:
«Дерево, построенное методом случайной вставки».
Затем следует строка:
«Обход в прямом порядке».
После этого выводятся элементы данных при их обходе в прямом порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.
Затем следует строка:
«Обход в обратном порядке».
После этого выводятся элементы данных при их обходе в обратном порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.
Затем следует строка:
«Обход в симметричном порядке».
После этого выводятся элементы данных при их обходе в симметричном порядке. Формат представления данных должен соответствовать формату представления данных в входном файле.
Затем выводится пустая строка.
После этого выводится заголовок:
«АВЛ- дерево».
После этого выводятся элементы данных АВЛ-дерева при их обходе в прямом, обратном и симметричном порядке. Формат вывода должен соответствовать формату вывода для дерева, построенного методом случайной вставки.