При выполнении лабораторной работы требуется создать шаблон класса-контейнера, реализующего динамическую структуру данных заданного типа и выполнить требуемую обработку.
Выполнение лабораторной работы следует осуществлять с учетом следующих требований:
Динамическую структуру требуется определить в виде шаблонного класса, реализующего заданное поведение. Тип динамической структуры определяется индивидуальным заданием. Дерево рекомендуется реализовать классом «узел дерева».
Задать необходимые методы в классе, задающем поведение динамической структуры:
очистку;
добавление элемента в соответствии с поведением:
i. для стеков, очередей поведение задается самим понятием «стек» или «очередь»;
ii. для связанных списков реализовать добавление в произвольную позицию;
iii. для деревьев добавление элемента может выполняться только к существующему узлу.
вывод содержимого.
Обеспечить дополнительную функциональность для коллекции, используя отдельные классы, которые её предоставляют.
Создать экземпляр класса и продемонстрировать работу всех методов, заданных в п.2
Варианты динамических структур:
Однонаправленный связанный список.
Двунаправленный связанный список.
Ассоциативный массив.
Кольцевой список
Стек (LIFO).
Очередь (FIFO).
Варианты дополнительной функциональности:
Сортировка по произвольному полю коллекции с переопределением операций сравнения для элемента.
Сортировка по произвольному полю коллекции с предоставлением отдельных объектов для сравнения.
Поиск информации в коллекции с использованием метода коллекции.
Поиск информации в коллекции с использованием наследования.
Поиск информации в коллекции с использованием отдельного класса.
Варианты задания:
1. Описать структуру Student, содержащую следующие поля: фамилия и инициалы; наименование группы; успеваемость (массив из пяти элементов). Динамическая структура – односвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи по наименованию группы;
- вывести фамилии (и группу) студентов, средний балл которых больше 4,0;
- если таких студентов нет, вывести соответствующее сообщение.
2. Описать структуру Student, содержащую следующие поля: фамилия и инициалы; наименование группы; успеваемость (массив из пяти элементов). Динамическая структура – стек.
Написать программу, выполняющую следующие действия:
- упорядочить записи по возрастанию среднего балла;
- вывести ведомость на получение стипендии: фамилии и группы для студентов, которые имеют оценки 4 и 5;
- если таких студентов нет, вывести соответствующее сообщение.
3. Описать структуру Student, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (массив из пяти элементов). Динамическая структура – двусвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи по алфавиту;
- вывести фамилии и номера групп для студентов, которые имеют хотя бы одну оценку 2;
- если таких студентов нет, вывести соответствующее сообщение.
4. Описать структуру Aeroflot, содержащую следующие поля: название пункта назначения; номер рейса; тип самолета. Динамическая структура – кольцевой список.
Написать программу, выполняющую следующие действия:
- упорядочить записи по номеру рейса;
- вывести номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого вводится с клавиатуры;
- если таких рейсов нет, вывести соответствующее сообщение.
5. Описать структуру Aeroflot, содержащую следующие поля: название пункта назначения; номер рейса; тип самолета. Динамическая структура – очередь.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке по названиям пунктов назначения;
- вывести номера рейсов и пункты назначения, обслуживаемых самолетами, тип которых вводится с клавиатуры;
- если таких рейсов нет, вывести соответствующее сообщение.
6. Описать структуру Train, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Динамическая структура – односвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке по названиям пунктов назначения;
- вывести информацию о поездах, отправляющихся после введенного с клавиатуры времени;
- если таких поездов нет, вывести соответствующее сообщение.
7. Описать структуру Train, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Динамическая структура – стек.
Написать программу, выполняющую следующие действия:
- упорядочить записи по времени отправления поездов;
- вывести информацию о поездах, направляющихся в пункт назначения введенного с клавиатуры;
- если таких поездов нет, вывести соответствующее сообщение.
8. Описать структуру Train, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Динамическая структура – двусвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи по номерам поездов;
- вывести информацию о поездах, номера которых введены с клавиатуры;
- если таких поездов нет, вывести соответствующее сообщение.
9. Описать структуру Worker, содержащую следующие поля: фамилия и инициалы работника; название занимаемой должности; год поступления на работу. Динамическая структура – кольцевой список.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке;
- вывести информацию о работниках, чей стаж работы превышает значение, введенное с клавиатуры;
- если таких работников нет, вывести соответствующее сообщение.
10. Описать структуру Marsh, содержащую следующие поля: название пункта назначения; название пункта отправления; номер маршрута. Динамическая структура – очередь.
Написать программу, выполняющую следующие действия:
- упорядочить записи по номерам маршрутов;
- вывести информацию о маршруте, номер которого введен с клавиатуры;
- если таких маршрутов нет, вывести соответствующее сообщение.
11. Описать структуру Price, содержащую следующие поля: название товара; название магазина, где он продается; стоимость товара. Динамическая структура – односвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке по наименованию товара;
- вывести информацию о товаре, название которого введено с клавиатуры;
- если таких товаров нет, вывести соответствующее сообщение.
12. Описать структуру Price, содержащую следующие поля: название товара; название магазина, где он продается; стоимость товара. Динамическая структура – стек.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке по наименованию магазинов;
- вывести информацию о товарах, продающихся в магазине, название которого введено с клавиатуры;
- если таких магазинов нет, вывести соответствующее сообщение.
13. Описать структуру Order, содержащую следующие поля: расчетный счет плательщика (буквенно-цифровой); расчетный счет получателя; перечисляемая сумма. Динамическая структура – двусвязный список.
Написать программу, выполняющую следующие действия:
- упорядочить записи в алфавитном порядке по расчетным счетам плательщиков;
- вывести информацию о сумме, снятой с расчетного счета плательщика, название которого введено с клавиатуры;
- если такого счета нет, вывести соответствующее сообщение.
14. Описать структуру Order, содержащую следующие поля: расчетный счет плательщика; расчетный счет получателя; перечисляемая сумма. Динамическая структура – кольцевой список.
Написать программу, выполняющую следующие действия:
- упорядочить записи в порядке возрастания перечисляемых сумм;
- вывести информацию о плательщике, с расчетного счета которого снята наибольшая сумма и переведена на расчетный счет получателя, название которого введено с клавиатуры;
- если такого счета нет, вывести соответствующее сообщение.
15. Описать структуру Student, содержащую следующие поля: фамилия и инициалы; название группы (буквы и цифры); успеваемость (массив из пяти элементов). Динамическая структура – очередь.
Написать программу, выполняющую следующие действия:
- упорядочить записи по возрастанию среднего балла;
- вывести фамилии и названия групп для студентов, которые имеют одинаковую фамилию;
- вывести наибольшее количество однофамильцев;
- если таких студентов нет, вывести соответствующее сообщение.
16. . Описать структуру Student, содержащую следующие поля: фамилия и инициалы; номер группы; успеваемость (массив из пяти элементов). Динамическая структура – кольцевой список.
Написать программу, выполняющую следующие действия:
- упорядочить записи по алфавиту;
- вывести фамилии и номера групп для студентов, которые имеют 3 оценки 2;
- если таких студентов нет, вывести соответствующее сообщение.
17. Описать структуру Auto, содержащую следующие поля: марка; номер; фамилия владельца. Динамическая структура – стек.
Написать программу, выполняющую следующие действия:
- упорядочить записи по фамилии (в алфавитном порядке);
- вывести фамилии владельцев и номера автомобилей данной марки (марку ввести с клавиатуры);
- если автомобилей данной марки нет, вывести соответствующее сообщение.
18. Описать структуру Book, содержащую следующие поля: фамилия автора; название и год издания. Динамическая структура – двусвязный список.
Написать программу, выполняющую следующие действия:
- вывести названия книг данного автора (фамилию автора ввести с клавиатуры);
- вывести список книг, которые прослужили более 10 лет;
- если таких книг нет, вывести соответствующее сообщение.
19. Описать структуру Cubic, содержащую следующие поля: длина ребра в сантиметрах; цвет; материал, из которого он изготовлен. Динамическая структура – односвязный список.
Написать программу, выполняющую следующие действия:
- вывести данные о кубиках, длина ребра которых больше 5 сантиметров;
- вывести данные о кубиках, изготовленных из заданного материала (название материала ввести с клавиатуры);
- если таких кубиков нет, вывести соответствующее сообщение.
20. Описать структуру Cubic, содержащую следующие поля: длина ребра в сантиметрах; цвет; материал, из которого он изготовлен. Динамическая структура – очередь.
Написать программу, выполняющую следующие действия:
- вывести данные о кубиках, упорядочив по убыванию длины ребра;
- вывести данные о кубиках, заданного цвета (цвет ввести с клавиатуры);
- если таких кубиков нет, вывести соответствующее сообщение.