5.Переместить элементы, удовлетворяющие заданному условию в другой (предварительно пустой) контейнер. Тип второго контейнера определяется вариантом задания.
6.Просмотреть второй контейнер.
7.Отсортировать первый и второй контейнеры по возрастанию элементов.
8.Просмотреть их.
9.Получить третий контейнер путем слияния первых двух.
10.Просмотреть третий контейнер.
11 .Подсчитать, сколько элементов, удовлетворяющих заданному условию, содержит третий контейнер.
12.Определить, есть ли в третьем контейнере элемент, удовлетворяющий заданному условию.
Методические указания.
1.Программы создается как EasyWin-приложение в Borland C++. Проект должен содержать 3 целевых узла (по числу программ).
2.В качестве пользовательского типа данных использовать любой пользовательский класс.
3.При создании контейнеров в программе № 2 объекты загружать из потока, для чего использовать программы записи и чтения потока.
4.Для вставки и удаления элементов контейнера в программе № 2 использовать соответствующие операции, определенные в классе контейнера.
5.Для создания второго контейнера в программе № 3 можно использовать либо алгоритм remove_copy_if, либо определить свой алгоритм copy_if, которого нет в STL.
6.Для поиска элемента в коллекции можно использовать алгоритм find_if, либо for_each, либо binary_search, если контейнер отсортирован.
7.Для сравнения элементов при сортировке по возрастанию используется операция <, которая должна быть перегружена в пользовательском классе. Для сортировки по убыванию следует написать функцию comp и использовать вторую версию алгоритма sort.
8.Условия поиска и замены элементов выбираются самостоятельно и для них пишется функция-предикат.
9.Для ввода-вывода объектов пользовательского класса следует перегрузить операции ―>>‖ и ―<<‖.
10.Некоторые алгоритмы могут не поддерживать используемые в вашей программе контейнеры. Например, алгоритм sort не поддерживает контейнеры, которые не имеют итераторов произвольного доступа. В этом случае следует написать свой алгоритм. Например, для стека алгоритм сортировки может выполняться следующим образом: переписать стек в вектор, отсортировать вектор, переписать вектор в стек.
10.При перемещении элементов ассоциативного контейнера в неассоциативный перемещаются только данные (ключи не перемещаются). И наоборот, при перемещении элементов неассоциативного контейнера в ассоциативный должен быть сформирован ключ.
2.Варианты заданий
Вариант 1 Написать программу для моделирования Т-образного сортировочного
узла на железной дороге с использованием контейнерного класса stack из STL Программа должна разделять на два направления состав, состоящий из
вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность ввода исходных данных с клавиатуры и из файла.
Вариант 2 Написать программу, отыскивающую проход по лабиринту, с
использованием контейнерного класса stack из STL.
Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Программа находит проход через лабиринт, двигаясь от заданного входа. После отыскания прохода программа выводит найденный путь в виде координат квадратов.
Вариант 3 Написать программу, моделирующую управление каталогом в файловой
системе.
Для каждого файла в каталоге содержатся следующие сведения: имя файла, дата создания, количество обращений к файлу.
Программа должна обеспечивать: начальное формирование каталога файлов; а вывод каталога файлов; удаление файлов, дата создания которых раньше заданной; выборку файла с наибольшим количеством обращений.
Выбор моделируемой функции должен осуществляться с помощью меню. Для представления каталога использовать контейнерный класс list из STL.
Вариант 4 Написать программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: начальное формирование данных о всех автобусах в парке в виде списка (ввод с клавиатуры или из файла); имитация выезда автобуса из парка: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте; имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке; вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте.
Для представления необходимых списков использовать контейнерный класс list.
Вариант 5 Написать программу учета заявок на авиабилеты.
Каждая заявка содержит; пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: добавление заявок в список; удаление заявок; вывод заявок по заданному номеру рейса и дате вылета; вывод всех заявок.
Для хранения данных использовать контейнерный класс list. Вариант 6 Написать программу учета книг в библиотеке.
Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать выбор С помощью меню и выполнение одном из следующих функций: добавление данных о книгах, вновь поступающих в библиотеку; удаление данных о списываемых книгах; выдача сведений о всех книгах, упорядоченных по фамилиям авторов; выдача сведений о всех книгах, упорядоченных по годам издания.
Хранение данных организовать с применением контейнерного класса muitlmap, в качестве ключа использовать «фамилию и инициалы автора».
Вариант 7 Написать программу «Моя записная книжка».
Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям.
Хранение данных организовать с применением контейнерного класса шар или multimap.
Вариант 8 Написать программу учета заявок на обмен квартир и поиска вариантов
обмена. Каждая заявка содержит сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: ввод заявки на обмен; поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «площадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку; вывод всей картотеки.
Для хранения данных картотеки использовать контейнерный класс list. Вариант 9 Написать программу «Автоматизированная информационная система на
железнодорожном вокзале».
Информационная система содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер поезда, станция назначения, время отправления.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: первоначальный ввод данных в информационную систему (с клавиатуры или из файла); вывод сведений по всем поездам; вывод сведений по поезду с запрошенным номером; вывод сведений по тем поездам, которые следуют до запрошенной станции назначения.
Хранение данных организовать с применением контейнерного класса vector.
Вариант 10 Написать программу «Англо-русский и русско-английский словарь».
«База данных» словаря должна содержать синонимичные варианты перевода слов.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций: Загрузка «базы данных» словаря (из файла). Выбор режима работы: англо-русский; русско-английский. Вывод вариантов перевода заданного английского слова. Вывод вариантов перевода заданного русского слова.
Базу данных словаря реализовать в виде двух контейнеров типа тар. Вариант 11 Написать программу, реализующую игру «Крестики-нолики» между
двумя игроками: пользователем и компьютером (роботом). В программе использовать контейнерные классы STL.
Вариант 12 Написать программу, решающую игру-головоломку «Игра в 15».
Начальное размещение номеров — случайное. Предусмотреть два режима демонстрации решения: непрерывный (с некоторой задержкой визуализации) и пошаговый (по нажатию любой клавиши). В программе использовать контейнерные классы STL.
Вариант 13 Составить программу формирования списка кандидатов, участвующих в
выборах губернатора.
Каждая заявка от кандидата содержит: фамилию и инициалы, дату рождения, место рождения, индекс популярности.