ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 01.01.2025
Просмотров: 763
Скачиваний: 2
СОДЕРЖАНИЕ
230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»
220201- «Управление и информатика в технических системах»
Фундаментальные структуры данных
Лабораторная работа № 3 Алгоритмы базовых и улучшенных сортировок. Порядковые статистики.
Лабораторная работа №4 Полустатические структуры данных
Динамические структуры данных односвязные и двусвязные списковые структуры
Деревья , как динамические структуры данных .
Алгоритмы метода перебора с возвратами - (мпв), "жадные" алгоритмы.
Таблица 1.2
|
№ вар. |
Текст задания |
|
1. |
Создать файл f, содержащий сведения о веществах: название вещества, его удельный вес, проводимость (проводник, полупроводник, изолятор). С помощью другой программы выбрать из этого файла данные о проводниках и сохранить их в другом файле. |
|
2. |
Создать файл данных по описанию варианта №1. С помощью другой программы найти среди веществ в этом файле проводник с наибольшим удельным весом. |
|
3. |
Создать файл f, содержащий различные даты. Каждая дата – это число, месяц и год. С помощью другой программы найти дату с наименьшим значением года. |
|
4. |
Создать файл f, содержащий различные даты, для каждой даты указать число, месяц и год. С помощью другой программы найти все весенние даты и сохранить их в другом файле g. |
|
5. |
Создать файл f, содержащий сведения о книгах. Сведения о каждой из книг – это фамилия автора, название книги и год издания. С помощью другой программы найти все книги данного автора, изданные с 1980 года. Сохранить эту информацию в файле g. |
|
6. |
Создать файл f, содержащий сведения об экспортируемых товарах: наименование товара, страна, импортирующая товар и объем поставляемой партии в штуках. С помощью другой программы, найти страны, в которые экспортируется данный товар. Занести сведения в файл g. |
|
7. |
Создать файл данных f по описанию варианта №6. С помощью другой программы найти общий объем экспорта данного товара. |
|
8. |
Создать файл f, который содержит следующие сведения о сотрудниках учреждения: фамилия сотрудника, инициалы и № телефона. С помощью другой программы найти телефон сотрудника по его фамилии и инициалам. |
|
9. |
Создать файл f, содержащий сведения об учениках школы: имя, фамилия и название класса (типа 10А). С помощью другой программы вывести все сведения об учениках заданного класса в другой файл, определив при этом количество учащихся в этом классе. |
|
10. |
Создать файл f, содержащий сведения об учениках школы: имя, фамилия и название класса (типа 10А). С помощью другой программы выяснить имеются ли однофамильцы в школе; если да – сохранить всю информацию о них в файле g. |
Контрольные вопросы
1. Концепция типа данных.
2. Объявление массива: статического и динамического.
3. Отображение массива на ОП. Адрес компоненты.
4. Выравнивание; упаковка массива.
5. Тип запись – определение, представление в ОП.
6. Представление множеств в ОП.
7. Последовательный файл.
8. Операции с файлами.
9. Буферизованные последовательности.
Лабораторная работа № 2
(4 часа)
Цель работы: Освоить на практике алгоритмы поиска элемента в фиксированной группе данных, а также представление фиксированных групп данных; научиться анализировать применяемые алгоритмы поиска.
Домашнее задание:
Изучить алгоритмы поиска по ключу в статических массивах: линейный поиск, бинарный поиск.
Изучить поиск в таблице, как разновидность поиска в массиве, когда ключ является составным объектом – строкой. Освоить алгоритмы поиска подстроки в строке: прямой, использующий метод деления пополам, алгоритм Кнута, Морриса и Пратта (КМП).
Порядок выполнения работы.
Открыть проект Delphi Structures.
Добавить в управляющее главное меню пункт «Лабораторная работа №2», при выборе которого должно появляться окно модуля «Poisk» (модуль «Poisk» с формой добавить в проект).
Установить на форму модуля Poisk компоненты, обеспечивающие ввод исходных данных, управляющую кнопку (класса TButton или TBitBtn) и компоненты для вывода результатов на экране в соответствии с вариантом задания таблицы №2.1.
В обработчике события onClick управляющей кнопки на языке
Object Pascal написать фрагмент программы для реализации алгоритма поиска в соответствии с вариантом.
Отладить обработчик на тестовых примерах и продемонстрировать работу приложения преподавателю.
произвести анализ запрограммированного алгоритма (по количеству сравнений).
Составить отчет и защитить работу преподавателю. В отчете обязательно представить блок-схему алгоритма решения задачи.
Таблица 2.1
|
№ вар. |
Текст задачи |
|
1. |
Дан массив целых чисел х: var x: array [1..20] of 1..21; и объявлен элемент y: y:1..21; Пусть все элементы массива х различны и расположены по убыванию. Используя бинарный поиск, найти y-то единственное целое число y є [1..21], которого нет в этом массиве. |
|
2. |
const n=50; var х: array [1..n] of integer; р: integer; Пусть первые (n-1) элемент массива х упорядочены по неубыванию, а n-я позиция в этом массиве свободна. Требуется вставить новый элемент р в этот массив с сохранением упорядоченности по неубыванию. Для поиска места вставки для элемента р использовать бинарный поиск. |
|
3. |
const n=31; var x: array[1..n] of integer; p: integer; k:1..n; found: boolean; Дан массив х, элементы которого упорядочены по возрастанию. Для элемента р методом бинарного поиска проверить: если р входит в массив х, то found присвоить TRUE, а переменной к-номер элемента массива х, равного р; если р не входит в массив х, то found присвоить FALSE, а элемент р вставить в массив х, не нарушая порядок возрастания. Замечание: при вводе элементов в массив х последний элемент оставить не заполненным. |
|
4. |
const n=10; m=20; var x: array[1..n, 1..m] of integer; y: integer; i,j: integer; В каждом столбце заданной целочисленной матрице, используя прямой поиск по ключу, найти элемент аij ,равный заданному ключу у. Составить массив Z из номеров строк для найденных элементов. Затем прямым поиском определить, присутствует ли в массиве Z элемент zi, равный значению у.
|
|
5. |
Пусть таблица Т и аргумент поиска х определяются следующим образом: Т: array[0..N-1] of string; x: string; Допустим n велико, а таблица упорядочена в алфавитном порядке. Используя алгоритмы: поиск делением пополам и посимвольного сравнения строк (каждая строка заканчивается #0), запрограммировать поиск х в Т. Если хєТ, выдать совпавшую строку, если х¢Т, то – сообщение о несовпадении х с элементом Тi. |
|
6. |
Пусть заданы массивы: S: array[0..N-1] of item; P: array[0..M-1] of item; 0≤M≤N. Методом прямого поиска строки запрограммировать поиск первого вхождения p в S. Item – это символы. Если поиск успешный, то кроме сообщения об этом, вывести номер символа в строке S, с которого начинается найденное совпадение. Проанализировать алгоритм прямого поиска, сделать вывод о худшем случае работы. |
|
7. |
С помощью эффективного КМП-алгоритма (Кнута, Морриса и Пратта) запрограммировать поиск образа р в строке S (описание структур р и S в вар. №6). |
Контрольные вопросы
Линейный поиск. Условия окончания поиска.
Линейный поиск с барьером.
Алгоритм поиска делением пополам (двоичный поиск). Анализ алгоритма.
Представление строк переменного размера без динамического распределения памяти.
Алгоритм поиска строки в таблице строк.
Прямой поиск образа в КМП-алгоритме.
предтрансляция образа в КМП-алгоритме.
Сравнительный анализ алгоритмов поиска образа в строке (по количеству требуемых сравнений).
Особенности работы алгоритмов поиска образа в строке, если строка читается из вторичной памяти.
Лабораторная работа № 3 Алгоритмы базовых и улучшенных сортировок. Порядковые статистики.
Цель работы: изучение и практическое применение алгоритмов сортировок:
основных базовых алгоритмов;
улучшенных эффективных алгоритмов, построенных на основе базовых.
Домашнее задание:
Изучить базовые алгоритмы сортировок:
а) с помощью прямого включения и его модификация двоичным включением;
б) сортировка с помощью прямого выбора;
в) сортировка с помощью прямого обмена (пузырьковая) и его модификация – шейкерная сортировка.
Освоить эффективные алгоритмы улучшенных методов сортировок:
а) сортировка Шелла (с помощью включений с уменьшением расстояний);
б) сортировка с помощью дерева (пирамидальная HeapSort), базируется на прямом выборе;
в) сортировка с помощью разделения (QuickSort), основанная на прямом обмене; особенности реализаций рекурсивным и итеративным алгоритмами;
Освоить применение алгоритмов сортировок для вычисления значения i-той порядковой статистики.
Порядок выполнения работы:
Открыть проект Delphi Structures.
На главной форме в главное меню добавить пункт «Лабораторная работа №3», при выборе которого должно появляться вертикальное подменю из двух пунктов:
SortBase
SortBest
Часть I (пункты 3÷6)
При выборе пункта 1) SortBase должно появляться окно модуля «Sortirovka1», для этого соответствующий модуль с формой необходимо добавить в проект.
Установить на форму модуля «Sortirovka1» компоненты, обеспечивающие ввод исходных данных, вывод результатов и управляющую кнопку, в соответствии с вариантом задания из таблицы 3.1.
В обработчике события onClick управляющей кнопки запрограммировать на языке Object Pascal алгоритм базовой сортировки в соответствии со своим вариантом задания. Отладить приложение и продемонстрировать работу преподавателю.
Составить отчет, в котором помимо текста обработчика, распечатки результатов и блок-схемы алгоритма, должен быть сравнительный анализ вашего варианта с алгоритмами других базовых методов сортировки.