- •Оглавление
- •Введение
- •Лабораторная работа №1. Реализация алгоритмов сортировки и поиска Задачи работы
- •Задание на лабораторную работу
- •Сортировка Шелла
- •Сортировка шейкером
- •Сортировка расческой (Comb sort)
- •Плавная сортировка (Smooth sort)
- •Метод Patience sorting
- •Лабораторная работа №2. Понятие контейнера данных. Основные типы контейнеров Задачи работы
- •Задание на лабораторную работу
- •Требования к отчетности по лабораторной работе
- •Предлагаемые этапы выполнения работы
- •Теоретический материал, необходимый для выполнения лабораторной работы Основные типы контейнеров Списки
- •Бинарные деревья поиска
- •Добавление элемента
- •Удаление элемента
- •Понятие сбалансированности дерева
- •Словари
- •Очереди с приоритетами
- •Очереди
- •Лабораторная работа №3. Использование стандартных контейнеров данных Задачи работы
- •Задание на лабораторную работу
- •Лабораторная работа №4. Использование стандартных реализаций алгоритмов stl Задачи работы
- •Задание на лабораторную работу
- •Кафедра компьютерной фотоники
Лабораторная работа №4. Использование стандартных реализаций алгоритмов stl Задачи работы
Задачами данной лабораторной работы являются:
Контроль освоения студентами теоретического материала (информации о стандартных алгоритмах STL).
Закрепление навыков использования механизмов стандартной библиотеки при разработке программного обеспечения.
Закрепление навыков решения прикладных задач разработки программного обеспечения.
Задание на лабораторную работу
Разработать программу, реализующую функциональность в соответствии с вариантом задания:
Реализовать программу хранения массива геометрических фигур в двумерном пространстве. Фигура – это окружность или N-угольник. Программа должна поддерживать поворот и растяжение/сжатие всех фигур относительно заданного пользователем центра. Необходима устойчивость программы к выбору контейнера данных.
Реализовать программу, хранящую в отсортированном массиве список пользователей операционной системы с информацией об имени и пароле. Пользователь вводит имя и пароль, программа сообщает, правильный ли пароль.
Указание: используйте функцию binary_search
Пожелание: Чтобы не хранить пароль в открытом виде, придумайте хэш-функцию, и храните имя и хэш-значение пароля. При проверке применяйте хэш-функцию к паролю и сравнивайте хэш-значения.
Разработайте программу, хранящую базу данных телефонной компании (фамилия, номер, остаток денег на счету) и по запросу пользователя выдающую количество пользователей с отрицательным остатком и их список.
Указание: можно использовать count_if, remove_copy_if, for_each…, equal_range
Реализуйте программу, заполняющую массив фиксированной длины прочитанными из файла значениями или случайными значениями (по выбору пользователя).
Указание: generate
Пожелание: используя стандартную библиотеку boost и функцию boost::bind, реализуйте чтение из файла в generate, не открывая файл каждый раз и не заводя глобальных переменных.
Реализуйте программу, считывающие из двух файлов два набора строчек и проверяющую их на совпадение.
Указание: generate, equal
Пожелание: используя стандартную библиотеку boost и функцию boost::bind, реализуйте чтение из файла в generate, не открывая файл каждый раз и не завождя глобальных переменных.
База данных телефонной компании реализована в форме отсортированного массива. Периодически приходит дополнение к базе – также отсортированный массив, который необходимо включить в главный.
Указание: используйте merge или inplace_merge.
В словаре – пары слово + объяснение. Напечатать список статей об отраслях науки, в которых слово заканчивается на «логия».
Указание: Например, remove_copy_if или for_each.
Прочитайте из файла последовательность чисел и выведите все возможные их перестановки в лексикографическом порядке (первая – по возрастанию, последняя – по убыванию).
Указание: sort, next_permutation
В текстовом файле – список сотрудников фирмы. Распечатайте списки сотрудников, принятых на работу до и после 01.01.2005.
Указание: partition
Достаточна разработка консольного приложения. Разработка Windows-приложения будет большим преимуществом выполнения работы, если студент достаточно подготовлен для создания Windows-приложений, иллюстрирующих работу системы.
Требования к отчетности по лабораторной работе
В качестве отчета по лабораторной работе студент предоставляет в электронном виде программу на языке C++, реализующую функциональность в соответствии с вариантом задания.
Предлагаемые этапы выполнения работы
Изучение алгоритмов STL (с акцентом на алгоритмы, рекомендованные указанием к варианту, и родственные им).
Выбор способа хранения данных в программе .
Выбор алгоритма
Теоретический материал, необходимый для выполнения лабораторной работы
Описание работы с классами в языке программирования C++
См. методические указания к лабораторной работе №2.
Литература
А.С. Захаров. Программирование на языках высокого уровня. Учебно-методическое пособие. Готовится к печати.
Б. Страуструп. Язык программирования C++. Специальное издание. Пер. с англ. –М.: ООО «Бином-Пресс», 2005 г. - 1104с.
Microsoft Developer Network (MSDN). // http://msdn.microsoft.com
К. Ларман. Применение UML 2.0 и шаблонов проектирования. 3-е издание. : Пер. с англ. – М.: ООО «И.Д. Вильямс», 2007. – 736с.
Кормен Т.Х., Лейзерсон Ч.И., Ривест Р.Л., Штайн К. Алгоритмы: построение и анализ. 2-ое издание. : Пер.с англ. –М.: ИД «Вильямс», 2007.
Кнут Д. Искусство программирования. Т. 3. ИД «Вильямс», 2000. – 832с.
Сортировка Шелла. Материал из Википедии – свободной энциклопедии.http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A8%D0%B5%D0%BB%D0%BB%D0%B0.
Сортировка Шейкером.
http://forum.masterby.net/index.php?s=491036d16047aca6227c248c9a5b49ce&showtopic=20&pid=26&st=0&#entry26
Comb sort. From Wikipedia, the free encyclopedia.
http://en.wikipedia.org/wiki/Comb_sort
Dijkstra E.W. Smoothsort, an alternative for sorting in situ.
http://www.cs.utexas.edu/~EWD/transcriptions/EWD07xx/EWD796a.html
Patience sorting. http://en.wikipedia.org/wiki/Patience_sorting
Musser, David (1997). "Introspective Sorting and Selection Algorithms". Software: Practice and Experience 27 (8): 983–993. Wiley. http://www.cs.rpi.edu/~musser/gp/introsort.ps
В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет». Министерством образования и науки Российской Федерации была утверждена Программа развития государственного образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный университет информационных технологий, механики и оптики» на 2009–2018 годы.