Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Labs-Programming.doc
Скачиваний:
23
Добавлен:
06.09.2019
Размер:
574.98 Кб
Скачать

Лабораторная работа №4. Использование стандартных реализаций алгоритмов stl Задачи работы

Задачами данной лабораторной работы являются:

  1. Контроль освоения студентами теоретического материала (информации о стандартных алгоритмах STL).

  2. Закрепление навыков использования механизмов стандартной библиотеки при разработке программного обеспечения.

  3. Закрепление навыков решения прикладных задач разработки программного обеспечения.

Задание на лабораторную работу

Разработать программу, реализующую функциональность в соответствии с вариантом задания:

        1. Реализовать программу хранения массива геометрических фигур в двумерном пространстве. Фигура – это окружность или N-угольник. Программа должна поддерживать поворот и растяжение/сжатие всех фигур относительно заданного пользователем центра. Необходима устойчивость программы к выбору контейнера данных.

        2. Реализовать программу, хранящую в отсортированном массиве список пользователей операционной системы с информацией об имени и пароле. Пользователь вводит имя и пароль, программа сообщает, правильный ли пароль.

Указание: используйте функцию binary_search

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

        1. Разработайте программу, хранящую базу данных телефонной компании (фамилия, номер, остаток денег на счету) и по запросу пользователя выдающую количество пользователей с отрицательным остатком и их список.

Указание: можно использовать count_if, remove_copy_if, for_each…, equal_range

        1. Реализуйте программу, заполняющую массив фиксированной длины прочитанными из файла значениями или случайными значениями (по выбору пользователя).

Указание: generate

Пожелание: используя стандартную библиотеку boost и функцию boost::bind, реализуйте чтение из файла в generate, не открывая файл каждый раз и не заводя глобальных переменных.

        1. Реализуйте программу, считывающие из двух файлов два набора строчек и проверяющую их на совпадение.

Указание: generate, equal

Пожелание: используя стандартную библиотеку boost и функцию boost::bind, реализуйте чтение из файла в generate, не открывая файл каждый раз и не завождя глобальных переменных.

        1. База данных телефонной компании реализована в форме отсортированного массива. Периодически приходит дополнение к базе – также отсортированный массив, который необходимо включить в главный.

Указание: используйте merge или inplace_merge.

        1. В словаре – пары слово + объяснение. Напечатать список статей об отраслях науки, в которых слово заканчивается на «логия».

Указание: Например, remove_copy_if или for_each.

        1. Прочитайте из файла последовательность чисел и выведите все возможные их перестановки в лексикографическом порядке (первая – по возрастанию, последняя – по убыванию).

Указание: sort, next_permutation

        1. В текстовом файле – список сотрудников фирмы. Распечатайте списки сотрудников, принятых на работу до и после 01.01.2005.

Указание: partition

Достаточна разработка консольного приложения. Разработка Windows-приложения будет большим преимуществом выполнения работы, если студент достаточно подготовлен для создания Windows-приложений, иллюстрирующих работу системы.

Требования к отчетности по лабораторной работе

В качестве отчета по лабораторной работе студент предоставляет в электронном виде программу на языке C++, реализующую функциональность в соответствии с вариантом задания.

Предлагаемые этапы выполнения работы

  1. Изучение алгоритмов STL (с акцентом на алгоритмы, рекомендованные указанием к варианту, и родственные им).

  2. Выбор способа хранения данных в программе .

  3. Выбор алгоритма

Теоретический материал, необходимый для выполнения лабораторной работы

Описание работы с классами в языке программирования C++

См. методические указания к лабораторной работе №2.

Литература

  1. А.С. Захаров. Программирование на языках высокого уровня. Учебно-методическое пособие. Готовится к печати.

  2. Б. Страуструп. Язык программирования C++. Специальное издание. Пер. с англ. –М.: ООО «Бином-Пресс», 2005 г. - 1104с.

  3. Microsoft Developer Network (MSDN). // http://msdn.microsoft.com

  4. К. Ларман. Применение UML 2.0 и шаблонов проектирования. 3-е издание. : Пер. с англ. – М.: ООО «И.Д. Вильямс», 2007. – 736с.

  5. Кормен Т.Х., Лейзерсон Ч.И., Ривест Р.Л., Штайн К. Алгоритмы: построение и анализ. 2-ое издание. : Пер.с англ. –М.: ИД «Вильямс», 2007.

  6. Кнут Д. Искусство программирования. Т. 3. ИД «Вильямс», 2000. – 832с.

  7. Сортировка Шелла. Материал из Википедии – свободной энциклопедии.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.

  8. Сортировка Шейкером.

http://forum.masterby.net/index.php?s=491036d16047aca6227c248c9a5b49ce&showtopic=20&pid=26&st=0&#entry26

  1. Comb sort. From Wikipedia, the free encyclopedia.

http://en.wikipedia.org/wiki/Comb_sort

  1. Dijkstra E.W. Smoothsort, an alternative for sorting in situ.

http://www.cs.utexas.edu/~EWD/transcriptions/EWD07xx/EWD796a.html

  1. Patience sorting. http://en.wikipedia.org/wiki/Patience_sorting

  2. 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 годы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]