Курсовая работа по дисциплине: Структуры и алгоритмы обработки данных. 2-й Семестр. Вариант №2
Состав работы
|
|
|
|
|
|
|
|
|
|
|
|
Работа представляет собой rar архив с файлами (распаковать онлайн), которые открываются в программах:
- Microsoft Word
Описание
Постановка задачи
Хранящуюся в файле базу данных загрузить в оперативную память компьютера и построить дерево поиска заданного типа, упорядочивающее данные сначала по первому полю, затем по второму и т.д.
Провести поиск по ключу в построенном дереве поиска. В качестве ключа использовать три буквы ФИО студента. (Например, ключ поиска для Сидорова Ивана Кузьмича – СИК). Из записей с одинаковым ключом сформировать очередь. Вывести содержимое очереди.
При выполнении задания главное внимание следует уделить эффективности применяемых алгоритмов, исключению всех лишних операций.
Операции, выражающие логически завершенные действия, рекомендуется оформлять в виде подпрограмм, грамотно выбирая между процедурами и функциями. Имена переменных и подпрограмм, параметры подпрограмм, используемые языковые конструкции должны способствовать удобочитаемости программы.
Для сравнения символьных строк КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ пользоваться встроенными языковыми средствами и библиотечными функциями.
Ваpианты баз данных (БД)
Общие замечания
Все текстовые поля следует pассматpивать как символьные массивы (array of char), а не стpоки (string). Это сделано для совместимости между языками Паскаль и Си, а также из-за того, что в базах данных не принято хранить лишнюю информацию, такую как длина строки. Если длина поля пpевышает pазмеp хpанимой в нем инфоpмации, то оно дополняется пpобелами спpава. Каждое текстовое поле имеет свой фоpмат, котоpый опpеделяет смысл записанных в него данных. Пpи описании фоpмата в угловых скобках < и > указываются отдельные его элементы (сами угловые скобки в состав текста не входят); пpобелы обозначаются с помощью символа подчеpкивания. Если поле включает только один текстовый элемент, то фоpмат не указывается.
Целочисленные поля пpедставляются 16-pазpядными положительными числами (типа word в Паскале).
Пpи описании стpуктуpы записей в пpогpаммах необходимо точно соблюдать поpядок и pазмеp полей.
ПРИМЕЧАНИЕ. Предварительный просмотр содержимого баз данных возможен с помощью программы VIEWBASE.EXE
Содержимое архива следует распаковать в отдельную папку и запустить файл VIEWBASE.EXE (файлы с расширением dat должны находиться в этой же папке)
(Вам будет предложено ввести цифру от 1 до 4, которая соответствует номеру вашего варианта и номеру базы данных)
Описание баз данных
B= 1 ВАЖНО:(файл base1.dat)
Библиогpафическая база данных "Жизнь замечательных людей"
Стpуктуpа записи:
Автоp: текстовое поле 12 символов
фоpмат <Фамилия>_<буква>_<буква>
Заглавие: текстовое поле 32 символа
фоpмат <Имя>_<Отчество>_<Фамилия>
Издательство: текстовое поле 16 символов
Год издания: целое число
Кол-во стpаниц: целое число
Пpимеp записи из БД:
Кловский_В_Б
Лев_Hиколаевич_Толстой_________
Молодая_гваpдия_
1963
864
D = 2 Двоичное Б-дерево
Основные идеи и хаpактеpистики пpименяемых алгоpитмов и стpуктуp данных
1.
В начале работы программы осуществляется загрузка базы данных в динамическую память. Для хранения одной записи базы данных используется запись типа TRecInf, которая включает в себя все поля записи базы данных (автор, заглавие, издательство, год издания, количество страниц). В качестве указателя на запись типа TRecInf объявлен тип PRecInf.
Для хранения указателей на записи базы данных применяется индексный массив db, который имеет размер 4000 – по количеству записей в базе данных.
Для загрузки базы данных в динамическую память вызывается процедура Load, которая создает записи базы данных в динамической памяти и сохраняет указатели на них в массиве db. После загрузки база данных отображается на экране. Для этого вызывается процедура BrowseDB.
2.
Из записей массива db строится дерево поиска – двоичное Б-дерево. Расскажем кратко, что представляет собой двоичное Б-дерево.
Двоичное Б-дерево состоит из вершин с одним или двумя элементами.
Рассмотрим задачу построения деревьев поиска в оперативной памяти компьютера. В этом случае неэффективным с точки зрения экономии памяти будет представление элементов внутри страницы в виде массива. Выход из положения - динамическое размещение на основе списочной структуры, когда внутри страницы существует список из одного или двух элементов.
Таким образом, страницы Б-дерева теряют свою целостность и элементы списков начинают играть роль вершин в двоичном дереве. Однако остается необходимость делать различия между ссылками на потомков (вертикальными) и ссылками на одном уровне (горизонтальными), а также следить, чтобы все листья были на одном уровне.
Построение двоичного Б-дерева происходит путем добавления новой вершины в уже существующее дерево. Введем логическую переменную VR, показывающую вертикальный рост дерева (в случае, если страница переполнилась и средний элемент передается на вышележащий уровень) и логическую переменную HR, определяющую горизонтальный рост дерева (если новый элемент размещается на этой же условной странице). Также определим показатель баланса BAL для каждой вершины, который принимает значение 0, если у данной вершины есть только вертикальные ссылки (вершина одна на странице), и значение 1, если у данной вершины есть правая горизонтальная ссылка.
При добавлении элементов в двоичное Б-дерево различают 4 ситуации, возникающих при росте левых или правых поддеревьев. Самый простой случай - рост правого поддерева вершины А, когда А - единственный элемент на странице. Тогда вертикальная ссылка просто превращается в горизонтальную (HR=1, баланс вершины А равен 1). Если на странице уже два элемента, то при добавлении новой вершины С средняя вершина В передается на вышестоящий уровень (VR=1, баланс вершины В равен 0).
В случае роста левого поддерева, если вершина В одна на странице, то вершина А добавляется на эту страницу. Однако левая ссылка не может быть горизонтальной, поэтому требуется переопределение ссылок (HR=1, баланс вершины А равен 1). Если на странице два элемента, то средняя вершина В поднимается на вышестоящий уровень (VR=1, баланс вершины В равен 0).
В программе для хранения информации о вершине используется запись типа TNode, указатель на нее PNode. В каждой записи типа TNode имеются поля: inf - указатель на информацию о книге, left- указатель на левую вершину, right - указатель на правую вершину, balance - баланс вершины.
Для создания дерева вызываем функцию CreateTree, которая для каждого элемента массива db вызывает процедуру AddNode, которая, в свою очередь, добавляет очередную вершину в дерево, упорядочивая записи сначала по первому полю, затем по второму и т.д. Для сравнения записей используется функция CompareRec, которая возвращает 0, если записи равны, -1, если первая запись меньше, 1, если первая запись больше.
Функция CreateTree возвращает корень созданного дерева.
3.
Вызываем функцию FindKey, которая ищет в дереве вершину по ключу и возвращает указатель на эту вершину. В качестве ключа используем первую букву моей фамилии и мои инициалы.
Если в построенном дереве вершины с таким ключом не найдены, то выдаем об этом сообщение на экран и завершаем выполнение программы. Иначе, вызываем процедуру CreateQueue, которая создает очередь из тех записей поддерева, которые соответствуют ключу. Этой процедуре передаем указатель на первую вершину поддерева, соответствующую ключу. Процедура CreateQueue обходит поддерево слева направо и заносит подходящие по ключу записи в очередь. Обход слева направо применен для того, чтобы можно было наглядно видеть правильность упорядоченности информации в дереве.
Указатель на начало очереди – qHead, на конец – qTail. Для хранения элемента очереди используется запись типа TInf, указатель на нее PInf. В каждой записи типа TInf имеются поля: inf – указатель на запись базы данных в динамической памяти и next - указатель на следующий элемент очереди.
После того, как очередь будет сформирована, она отображается на экране. Для этого вызывается процедура BrowseQueue.
Распечатка текста пpогpа
Хранящуюся в файле базу данных загрузить в оперативную память компьютера и построить дерево поиска заданного типа, упорядочивающее данные сначала по первому полю, затем по второму и т.д.
Провести поиск по ключу в построенном дереве поиска. В качестве ключа использовать три буквы ФИО студента. (Например, ключ поиска для Сидорова Ивана Кузьмича – СИК). Из записей с одинаковым ключом сформировать очередь. Вывести содержимое очереди.
При выполнении задания главное внимание следует уделить эффективности применяемых алгоритмов, исключению всех лишних операций.
Операции, выражающие логически завершенные действия, рекомендуется оформлять в виде подпрограмм, грамотно выбирая между процедурами и функциями. Имена переменных и подпрограмм, параметры подпрограмм, используемые языковые конструкции должны способствовать удобочитаемости программы.
Для сравнения символьных строк КАТЕГОРИЧЕСКИ НЕ РЕКОМЕНДУЕТСЯ пользоваться встроенными языковыми средствами и библиотечными функциями.
Ваpианты баз данных (БД)
Общие замечания
Все текстовые поля следует pассматpивать как символьные массивы (array of char), а не стpоки (string). Это сделано для совместимости между языками Паскаль и Си, а также из-за того, что в базах данных не принято хранить лишнюю информацию, такую как длина строки. Если длина поля пpевышает pазмеp хpанимой в нем инфоpмации, то оно дополняется пpобелами спpава. Каждое текстовое поле имеет свой фоpмат, котоpый опpеделяет смысл записанных в него данных. Пpи описании фоpмата в угловых скобках < и > указываются отдельные его элементы (сами угловые скобки в состав текста не входят); пpобелы обозначаются с помощью символа подчеpкивания. Если поле включает только один текстовый элемент, то фоpмат не указывается.
Целочисленные поля пpедставляются 16-pазpядными положительными числами (типа word в Паскале).
Пpи описании стpуктуpы записей в пpогpаммах необходимо точно соблюдать поpядок и pазмеp полей.
ПРИМЕЧАНИЕ. Предварительный просмотр содержимого баз данных возможен с помощью программы VIEWBASE.EXE
Содержимое архива следует распаковать в отдельную папку и запустить файл VIEWBASE.EXE (файлы с расширением dat должны находиться в этой же папке)
(Вам будет предложено ввести цифру от 1 до 4, которая соответствует номеру вашего варианта и номеру базы данных)
Описание баз данных
B= 1 ВАЖНО:(файл base1.dat)
Библиогpафическая база данных "Жизнь замечательных людей"
Стpуктуpа записи:
Автоp: текстовое поле 12 символов
фоpмат <Фамилия>_<буква>_<буква>
Заглавие: текстовое поле 32 символа
фоpмат <Имя>_<Отчество>_<Фамилия>
Издательство: текстовое поле 16 символов
Год издания: целое число
Кол-во стpаниц: целое число
Пpимеp записи из БД:
Кловский_В_Б
Лев_Hиколаевич_Толстой_________
Молодая_гваpдия_
1963
864
D = 2 Двоичное Б-дерево
Основные идеи и хаpактеpистики пpименяемых алгоpитмов и стpуктуp данных
1.
В начале работы программы осуществляется загрузка базы данных в динамическую память. Для хранения одной записи базы данных используется запись типа TRecInf, которая включает в себя все поля записи базы данных (автор, заглавие, издательство, год издания, количество страниц). В качестве указателя на запись типа TRecInf объявлен тип PRecInf.
Для хранения указателей на записи базы данных применяется индексный массив db, который имеет размер 4000 – по количеству записей в базе данных.
Для загрузки базы данных в динамическую память вызывается процедура Load, которая создает записи базы данных в динамической памяти и сохраняет указатели на них в массиве db. После загрузки база данных отображается на экране. Для этого вызывается процедура BrowseDB.
2.
Из записей массива db строится дерево поиска – двоичное Б-дерево. Расскажем кратко, что представляет собой двоичное Б-дерево.
Двоичное Б-дерево состоит из вершин с одним или двумя элементами.
Рассмотрим задачу построения деревьев поиска в оперативной памяти компьютера. В этом случае неэффективным с точки зрения экономии памяти будет представление элементов внутри страницы в виде массива. Выход из положения - динамическое размещение на основе списочной структуры, когда внутри страницы существует список из одного или двух элементов.
Таким образом, страницы Б-дерева теряют свою целостность и элементы списков начинают играть роль вершин в двоичном дереве. Однако остается необходимость делать различия между ссылками на потомков (вертикальными) и ссылками на одном уровне (горизонтальными), а также следить, чтобы все листья были на одном уровне.
Построение двоичного Б-дерева происходит путем добавления новой вершины в уже существующее дерево. Введем логическую переменную VR, показывающую вертикальный рост дерева (в случае, если страница переполнилась и средний элемент передается на вышележащий уровень) и логическую переменную HR, определяющую горизонтальный рост дерева (если новый элемент размещается на этой же условной странице). Также определим показатель баланса BAL для каждой вершины, который принимает значение 0, если у данной вершины есть только вертикальные ссылки (вершина одна на странице), и значение 1, если у данной вершины есть правая горизонтальная ссылка.
При добавлении элементов в двоичное Б-дерево различают 4 ситуации, возникающих при росте левых или правых поддеревьев. Самый простой случай - рост правого поддерева вершины А, когда А - единственный элемент на странице. Тогда вертикальная ссылка просто превращается в горизонтальную (HR=1, баланс вершины А равен 1). Если на странице уже два элемента, то при добавлении новой вершины С средняя вершина В передается на вышестоящий уровень (VR=1, баланс вершины В равен 0).
В случае роста левого поддерева, если вершина В одна на странице, то вершина А добавляется на эту страницу. Однако левая ссылка не может быть горизонтальной, поэтому требуется переопределение ссылок (HR=1, баланс вершины А равен 1). Если на странице два элемента, то средняя вершина В поднимается на вышестоящий уровень (VR=1, баланс вершины В равен 0).
В программе для хранения информации о вершине используется запись типа TNode, указатель на нее PNode. В каждой записи типа TNode имеются поля: inf - указатель на информацию о книге, left- указатель на левую вершину, right - указатель на правую вершину, balance - баланс вершины.
Для создания дерева вызываем функцию CreateTree, которая для каждого элемента массива db вызывает процедуру AddNode, которая, в свою очередь, добавляет очередную вершину в дерево, упорядочивая записи сначала по первому полю, затем по второму и т.д. Для сравнения записей используется функция CompareRec, которая возвращает 0, если записи равны, -1, если первая запись меньше, 1, если первая запись больше.
Функция CreateTree возвращает корень созданного дерева.
3.
Вызываем функцию FindKey, которая ищет в дереве вершину по ключу и возвращает указатель на эту вершину. В качестве ключа используем первую букву моей фамилии и мои инициалы.
Если в построенном дереве вершины с таким ключом не найдены, то выдаем об этом сообщение на экран и завершаем выполнение программы. Иначе, вызываем процедуру CreateQueue, которая создает очередь из тех записей поддерева, которые соответствуют ключу. Этой процедуре передаем указатель на первую вершину поддерева, соответствующую ключу. Процедура CreateQueue обходит поддерево слева направо и заносит подходящие по ключу записи в очередь. Обход слева направо применен для того, чтобы можно было наглядно видеть правильность упорядоченности информации в дереве.
Указатель на начало очереди – qHead, на конец – qTail. Для хранения элемента очереди используется запись типа TInf, указатель на нее PInf. В каждой записи типа TInf имеются поля: inf – указатель на запись базы данных в динамической памяти и next - указатель на следующий элемент очереди.
После того, как очередь будет сформирована, она отображается на экране. Для этого вызывается процедура BrowseQueue.
Распечатка текста пpогpа
Дополнительная информация
Работа зачтена без замечаний.
Сдано в 2014 г.
Сдано в 2014 г.
Похожие материалы
Курсовая работа по дисциплине: Структуры и алгоритмы обработки данных. 2-й Семестр. Вариант 02
evgeniidavydov
: 3 января 2012
ЧАСТЬ 1.
Написать программу, строящую следующую списочную структуру. Каждый элемент списка состоит из трех полей: первое поле - для связи элементов в одном списке, второе - информационное (заполняется вводимой последовательностью целых чисел в которой 0 отмечает конец каждого списка; числа N и K не вводятся, а подсчитываются при вводе последовательности третье - для связи двух линейных списков. ............
ЧАСТЬ2:
Написать программу, которая упорядочивает методом простого включения
500 руб.
Структуры и алгоритмы обработки данных. Зачет. 3-й семестр
karapulka
: 31 мая 2016
Что такое коллизия?
Коллизия хеш-функции
Коллизией хеш-функции H называется два различных входных блока данных x и y таких, что H = H.
Коллизии существуют для большинства хеш-функций, но для «хороших» хеш-функций частота их возникновения близка к теоретическому минимуму. В некоторых частных случаях, когда множество различных входных данных конечно, можно задать инъективную хеш-функцию, по определению не имеющую коллизий. Однако для хеш-
10 руб.
Курсовая работа по дисциплине "Структуры и алгоритмы обработки данных"
sibsutisleak
: 27 марта 2016
Алгоритмы кластеризации. Алгоритм k-средних (k-means)
Задание:
1. В соответствии со своим вариантом изучить и описать в отчете заданную структуру данных/алгоритм. Привести иллюстрации выполнения основных шагов алгоритма (или операций над структурой данных), выполнить асимптотический анализ его вычислительной сложности. Отчет должен быть скреплен скоросшивателем (пример оформления отчета доступен на сайте).
2. Структура данных или алгоритм должен быть реализован на языке C и приложен к отчету (на
500 руб.
Курсовая работа по дисциплине: «Структуры и алгоритмы обработки данных»
Dusya
: 5 октября 2011
Постановка задачи
Хранящуюся в файле базу данных загрузить в оперативную память компьютера и построить индексный массив, упорядочивающий данные в соответствии с заданным условием упорядочения, используя указанный метод сортировки. Провести поиск по ключу в упорядоченной базе, из записей с одинаковым ключом сформировать очередь. Вывести содержимое очереди. Из записей очереди построить дерево поиска по другому ключу и произвести поиск по запросу.
450 руб.
Курсовая работа. 3-й семестр. Структуры и алгоритмы обработки данных
oksana
: 22 марта 2015
Дисциплина: «Структуры и алгоритмы обработки данных»
(часть 2 Древовидные структуры данных)
Вариант 21.
B = 4 ВАЖНО:(файл base4.dat)
200 руб.
Лабораторная работа №3. 3-й семестр. Структуры и алгоритмы обработки данных
oksana
: 22 марта 2015
Вариант 1
1. Разработать процедуру построения АВЛ-дерева.
2. Вычислить среднюю высоту АВЛ-дерева для n=10, 50, 100, 200, 400 (n -количество вершин в дереве) и заполнить таблицу следующего вида. Проанализировать полученные результаты, сравнить их с теоретическими оценками и результатами из лабораторной работы 1.
100 руб.
Лабораторная работа №5. 3-й семестр. Структуры и алгоритмы обработки данных
oksana
: 22 марта 2015
Вариант 1
1. Разработать процедуры построения ДОП приближенными методами А1 и А2.
2. Вычислить средневзвешенную высоту построенных ДОП для n=10, 50, 100, 200, 400 (n -количество вершин в дереве) и заполнить таблицу следующего вида. Проанализировать полученные результаты, сравнить их между собой.
100 руб.
Структуры и алгоритмы обработки данных. Экзамен. 2-й Семестр. Билет № 8
evgeniidavydov
: 3 января 2012
1. Нелинейные связные структуры.
2. Показать процесс построения дерева поиска
Построить бинарное дерево поиска, содержащее следующие узлы:
Кузьмин, Васин, Носов, Лунев, Якушев, Симин, Дымов, Акимов, Борисов, Евсеев, Полунин, Тимофеев, Фадеев, Максимов, Усов
(показать вывод обходом сверху)
3.Построить бинарное дерево поиска из фамилий записанных в файл. Подсчитать количество элементов дерева. Вывести узлы дерева обходом слева. Первую и последнюю фамилии поместить в список
58 руб.
Другие работы
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
mosintacd
: 28 июня 2024
ММА/ИДО Иностранный язык в профессиональной сфере (ЛТМ) Тест 20 из 20 баллов 2024 год
Московская международная академия Институт дистанционного образования Тест оценка ОТЛИЧНО
2024 год
Ответы на 20 вопросов
Результат – 100 баллов
С вопросами вы можете ознакомиться до покупки
ВОПРОСЫ:
1. We have … to an agreement
2. Our senses are … a great role in non-verbal communication
3. Saving time at business communication leads to … results in work
4. Conducting negotiations with foreigners we shoul
150 руб.
Задание №2. Методы управления образовательными учреждениями
studypro
: 13 октября 2016
Практическое задание 2
Задание 1. Опишите по одному примеру использования каждого из методов управления в Вашей профессиональной деятельности.
Задание 2. Приняв на работу нового сотрудника, Вы надеялись на более эффективную работу, но в результате разочарованы, так как он не соответствует одному из важнейших качеств менеджера - самодисциплине. Он не обязателен, не собран, не умеет отказывать и т.д.. Но, тем не менее, он отличный профессионал в своей деятельности. Какими методами управления Вы во
200 руб.
Особенности бюджетного финансирования
Aronitue9
: 24 августа 2012
Содержание:
Введение
Теоретические основы бюджетного финансирования
Понятие и сущность бюджетного финансирования
Характеристика основных форм бюджетного финансирования
Анализ бюджетного финансирования образования
Понятие и источники бюджетного финансирования образования
Проблемы бюджетного финансирования образования
Основные направления совершенствования бюджетного финансирования образования
Заключение
Список использованный литературы
Цель курсовой работы – исследовать особенности бюджетного фин
20 руб.
Программирование (часть 1-я). Зачёт. Билет №2
sibsutisru
: 3 сентября 2021
ЗАЧЕТ по дисциплине “Программирование (часть 1)”
Билет 2
Определить значение переменной y после работы следующего фрагмента программы:
a = 3; b = 2 * a – 10; x = 0; y = 2 * b + a;
if ( b > y ) or ( 2 * b < y + a ) ) then begin x = b – y; y = x + 4 end;
if ( a + b < 0 ) and ( y + x > 2 ) ) then begin x = x + y; y = x – 2 end;
200 руб.