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

2.
Написать программу, моделирующую заполнение гибкого магнитного диска.
Общий объем памяти на диске 360 Кбайт. Файлы имеют произвольную длину от 18 байт до 32 Кбайт. В процессе работы файлы либо записываются на диск, либо удаляются с него.
В начале работы файлы записываются подряд друг за другом. После удаления файла на диске образуется свободный участок памяти, и вновь записываемый файл либо размещается на свободном участке, либо, если файл не помещается в свободный участок, размещается после последнего записанного файла.
В случае, когда файл превосходит длину самого большого свободного участка, выдается аварийное сообщение. Требование на запись или удаление файла задается в  строке, которая содержит имя файла, его длину в байтах, признак записи или удаления. Программа должна выдавать по запросу сведения о занятых и свободных участках памяти на диске.
Указание: следует создать список занятых участков и список свободных участков памяти на диске. Списки должны храниться на диске. Для хранения списков в ОП использовать класс list.

3.
Написать программу, моделирующую управление каталогом в файловой системе.
Для каждого файла в каталоге содержатся следующие сведения: имя файла, дата создания, количество обращений к файлу. База хранится в текстовом файле, его размер может быть произвольным.
Программа должна обеспечивать:
□	начальное формирование каталога файлов в виде списка;
□	вывод каталога файлов;
□	обращение к файлу;
□	удаление файлов, дата создания которых раньше заданной;
□	выборку файла с наибольшим количеством обращений.
Выбор моделируемой функции должен осуществляться с помощью меню. Для представления базы в ОП использовать класс list, реализующий линейный двусвязный список.

4.
Написать программу моделирования работы автобусного парка. 
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута. База хранится в текстовом файле, его размер может быть произвольным.
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
□	начальное формирование данных о всех автобусах в парке в виде списка;
□	имитация  выезда автобуса из парка: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте;
□	имитация въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте, и записывает эти данные в список автобусов, находящихся в парке;
□	вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте.
Для представления необходимых списков использовать класс list.

5.
Написать программу учета заявок на авиабилеты.
Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. База хранится в текстовом файле, его размер может быть произвольным.	
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
□	добавление заявок в список;
□	удаление заявок;
□	вывод заявок по заданному номеру рейса и дате вылета;
□	вывод всех заявок.
Для хранения данных использовать класс  list.

6.
Написать программу учета книг в библиотеке.
Сведения о книгах содержат: УДК, фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке. База хранится в текстовом файле, его размер может быть произвольным.
Программа должна обеспечивать выбор с помощью меню и выполнение  следующих функций:
□	добавление данных о книгах, вновь поступающих в библиотеку;
□	удаление данных о списываемых книгах;
□	выдача книги;
□	выдача сведений о наличии книг в библиотеке; 
Хранение данных организовать с применением класса tree, в качестве ключа использовать УДК.

7.
Написать программу «Моя записная книжка». Одна запись содержит фамилию и имя, дату рождения и номер телефона. База хранится в текстовом файле.
Предусмотреть возможность работы с произвольным числом записей, поиска записи по дате рождения, добавления и удаления записей.
Хранение данных организовать с применением класса tree.

8.
Написать программу учета заявок на обмен квартир и поиска вариантов обмена.
Каждая заявка содержит сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район. База хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
□	ввод заявки на обмен;
□	поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «площадь» в пределах 10% выводится соответствующая карточка и удаляется
из списка, в противном случае поступившая заявка включается в картотеку;
□	вывод всей картотеки.
Для хранения данных картотеки использовать класс list.

9.
	Написать программу «Автоматизированная информационная система на железнодорожном вокзале».
Информационная система содержит сведения об отправлении поездов дальнего следования.. Для каждого поезда указывается: номер поезда, станция назначения, время отправления. База хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
□	ввод данных в информационную систему; 
□	вывод сведений по всем поездам;
□	вывод сведений по поезду с запрошенным номером;
□	вывод сведений по тем поездам, которые следуют до запрошенной станции
назначения.
Хранение данных организовать с применением класса vector.

10.
Написать программу «Англо-русский и русско-английский словарь».
«База данных» словаря содержит по одному варианту перевода слов и хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
□	Формирование «базы данных» словаря.
□	Выбор режима работы:
 англо-русский;
русско-английский.
□	Вывод перевода заданного английского слова.
□	Вывод перевода заданного русского слова.
Базу данных словаря реализовать в виде класса vector.

11.
Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте:
□	возраст;
□	пол;
□	образование (начальное, среднее, высшее).
Вторая группа содержит собственно вопрос анкеты, ответом на который может являться либо ДА, либо НЕТ.
Анкеты должны храниться в текстовом файле.
Написать программу, которая:
□	обеспечивает начальный ввод анкет;
□	на основе анализа анкет выдает ответы на следующие вопросы:
а) сколько мужчин старше 40 лет, имеющих высшее образование, ответили ДА на вопрос анкеты; 
б) сколько женщин моложе 30 лет, имеющих среднее образование, ответили НЕТ на вопрос анкеты;
в) сколько мужчин моложе 25 лет, имеющих начальное образование, ответили ДА на вопрос анкеты;
□	производит вывод всех анкет с ответами на вопросы.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе. Для хранения данных картотеки использовать класс list.

12.
На телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована в виде линейного списка и хранится в файле.
Написать программу, которая:
□	обеспечивает начальное формирование картотеки;
□	производит вывод всей картотеки;
□	вводит номер телефона, дату и время разговора;
□	выводит извещение на оплату телефонного разговора.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

13.
Составить программу формирования списка кандидатов, участвующих в выборах в местное законодательное собрание.
Каждая заявка от кандидата содержит: фамилию и инициалы, дату рождения, место рождения, индекс популярности.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
□	Добавление заявки в список кандидатов. Для ввода индекса популярности
(значение указано в скобках) предусмотреть выбор с помощью подменю одного из следующих вариантов:
•	поддержан губернатором (70);
•	поддержан оппозиционной партией (15);
•	оппозиционный кандидат, который снимет свою кандидатуру в пользу кандидата № 1 (10);
•	прочие (5).
□	Удаление заявки по заявлению кандидата.
□	Формирование и вывод списка для голосования в приоритетном порядке с учётом индекса популярности.
Хранение данных организовать с применением класса «очередь с приоритетами». Для правильной работы очереди с приоритетами определить операцию < (меньше) в классе, описывающем заявку кандидата. Формирование и вывод списка для голосования реализовать посредством выборки заявок из очереди. Для элементов с равными приоритетами очередь с приоритетами является простой очередью.

14.
Составить программу моделирования работы автобусного парка.
Сведения о каждом автобусе содержат: номер автобуса, фамилию и инициалы водителя, номер маршрута. База хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
□	начальное формирование данных о всех автобусах в парке;
□	имитация выезда автобуса из парка: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся в парке, и записывает эти данные в список автобусов, находящихся на маршруте;
□	имитация  въезда автобуса в парк: вводится номер автобуса; программа удаляет данные об этом автобусе из списка автобусов, находящихся на маршруте,
и записывает эти данные в список автобусов, находящихся в парке;
□	вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте, упорядоченных по номерам автобусов;
□	вывод сведений об автобусах, находящихся в парке, и об автобусах, находящихся на маршруте, упорядоченных по номерам маршрутов.
Хранение всех необходимых списков организовать с применением  класса tree, в качестве ключа использовать «номер автобуса».

15.
Составить программу учета заявок на авиабилеты.
Каждая заявка содержит: пункт назначения, номер рейса, фамилию и инициалы пассажира, желаемую дату вылета. База хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
□	добавление заявок в список;
□	удаление заявок;
□	вывод заявок по заданному номеру рейса и дате вылета;
□	вывод всех заявок, упорядоченных по пунктам назначения;
□	вывод всех заявок, упорядоченных по датам вылета.
Хранение данных организовать с применением класса vector.

16.
Написать программу учета книг в библиотеке.
Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать выбор с помощью меню и выполнение  следующих функций:
□	добавление данных о книгах, вновь поступающих в библиотеку;
□	удаление данных о списываемых книгах;
□	выдача сведений о всех книгах, упорядоченных по фамилиям авторов; 
□	выдача сведений о всех книгах, упорядоченных по годам издания.
Хранение данных организовать с применением класса vector.

17.
Написать программу «Моя записная книжка».
Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям.
Хранение данных организовать с применением класса list.

18.
Написать программу учета заявок на обмен квартир и поиска вариантов обмена.
Каждая заявка содержит фамилию и инициалы заявителя, а также сведения о двух квартирах: требуемой (искомой) и имеющейся, Сведения о каждой квартире содержат: количество комнат, площадь, этаж, оценочную стоимость квартиры.
Программа должна обеспечивать выбор с помощью меню и выполнение следующих функций:
□	ввод заявки на обмен;
□	поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «стоимость» в пределах 10% соответствующая карточка выводится и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
□	вывод всей картотеки.
Хранение данных организовать с применением класса tree. В качестве ключа использовать показатель «оценочная стоимость», который должен быть уникальным.

19.
Написать программу «Автоматизированная информационная система на железнодорожном вокзале».
Информационная система содержит сведения об отправлении поездов дальнего следования. Для каждого поезда указывается: номер, станция назначения, время отправления.
Программа должна обеспечивать выбор с помощью меню и выполнение  следующих функций:
□	первоначальный ввод данных в информационную систему (с клавиатуры или из файла);
□	вывод сведений по всем поездам;
□	вывод сведений по поезду с запрошенным номером;
□	вывод сведений по тем поездам, которые следуют до запрошенной станции
назначения.
Хранение данных организовать с применением класса vector.

20.
На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована в виде двоичного дерева и хранится в файле.
Написать программу, которая:
□	обеспечивает начальное формирование картотеки;
□	производит вывод всей картотеки;
□	вводит номер телефона, дату и время разговора;
□	раз в месяц выводит извещение на оплату телефонного  разговора.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

21.
Написать программу работы с базой отдела кадров предприятия. База хранится в текстовом файле, его размер может быть произвольным. Каждая строка файла содержит запись об одном сотруднике. Формат записи: фамилия и инициалы (30 поз., фамилия должна начинаться с первой позиции), год рождения (5 поз.), зарплата (10 поз.).  
Программа должна обеспечивать:
□	начальное формирование и дополнение базы данных о сотрудниках;
□	корректировку сведений о сотрудниках;
□	поиск сотрудника в базе по фамилии;
□	поиск самого молодого сотрудника;
Для представления базы в ОП использовать класс list, реализующий линейный двусвязный список.

22.
Написать программу работы с базой отдела кадров предприятия. База хранится в текстовом файле, его размер может быть произвольным. Каждая строка файла содержит запись об одном сотруднике. Формат записи: фамилия и инициалы (30 поз., фамилия должна начинаться с первой позиции), год рождения (5 поз.), оклад (10 поз.).  
Программа должна обеспечивать:
□	начальное формирование и дополнение базы данных о сотрудниках;
□	корректировку сведений о сотрудниках;
□	поиск сотрудника в базе по фамилии;
□	поиск самого высокооплачиваемого сотрудника;
Для представления базы в ОП использовать класс tree, реализующий бинарное дерево.

23.
Предметный указатель в книге организован в виде линейного списка.
Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, лежит в диапазоне от одного до десяти. Предметный указатель хранится в текстовом файле.
Написать программу, которая обеспечивает:
□	начальное формирование предметного указателя;
□	вывод предметного указателя;
□	вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.

24.
Написать программу, моделирующую работу с предметным указателем в книге.
Каждая компонента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, лежит в диапазоне от одного до десяти. Предметный указатель хранится в текстовом файле.
Программа должна обеспечивать выполнение следующих функций:
□	начальное формирование предметного указателя;
□	вывод предметного указателя;
□	вывод номеров страниц для заданного слова.
Программа должна обеспечивать диалог с помощью меню и контроль ошибок при вводе.
Для представления предметного указателя в ОП использовать класс tree, реализующий бинарное дерево.

25.
Написать программу «Немецко-русский и русско-немецкий словарь».
«База данных» словаря содержит по одному варианту перевода слов и хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
□	Формирование «базы данных» словаря.
□	Выбор режима работы:
 англо-русский;
русско-английский.
□	Вывод перевода заданного английского слова.
□	Вывод перевода заданного русского слова.
Базу данных словаря реализовать в виде класса tree.

26.
Написать программу учета книг в библиотеке.
Сведения о книгах содержат: фамилию и инициалы автора, название, год издания, количество экземпляров данной книги в библиотеке.
Программа должна обеспечивать выбор с помощью меню и выполнение  следующих функций:
□	добавление данных о книгах, вновь поступающих в библиотеку;
□	удаление данных о списываемых книгах;
□	выдача сведений о всех книгах, упорядоченных по фамилиям авторов; 
□	выдача сведений о всех книгах, упорядоченных по годам издания.
Хранение данных организовать с применением класса vector.