Вариант 8. Используя очередь, решить следующую задачу. За один просмотр файла с данными и без использования дополнительных файлов напечатать элементы этого файла в следующем порядке:
*Сначала – все числа, меньшие A,
*Затем – все числа из отрезка [A, B],
*И наконец – все остальные числа.
A и B – вводятся с клавиатуры (A < B). Для реализации АТД Очередь использовать динамическое распределение памяти.
Алгоритм решения задачи
1. Считать границы А и В для корректного ввода данных в очередь;
2. Считать число из файла
3. Занести число в подочередь, в зависимости от введённого интервала, куда попадает число;
4. Записать в счётчик, какой по счёту элемент был занесён в очередь;
5. Перейти к пункту 2, пока все данные не закончатся;
6. Как только все данные занесены в подочереди, начать возвращать данные из очереди поочёрёдно;
7. Возвратить, согласно АТД «очередь» и индивидуальному заданию, сначала все числа, меньше заданного А, потом все числа в промежутке от А до В, и зачем все числа, больше В.
Программная реализация Последовательность действий при программной реализации:
1. Задать класс с необходимыми полями для каждого элемента и статическими переменными для всей очереди в целом.
2. Реализовать алгоритм решения поставленной задачи.
3. Реализовать основные функции работы с очередью, реализованной на указателях (Конструктор – инициализация, EnQueue(), DeQueue())
4. Реализовать в главной функции корректное считывание данных из файла и вывод данных в консоль правильно занесённых согласно заданию элементов в очередь;