Лабораторная работа: Типовой расчет «Процедуры, функции, модули» 13 вариант вариант 13
Описание
Задание Г – «ДЕК»
Часть Г1. Смоделировать двумя способами новый тип «Дек» (DEQ = Double Ended Queue = «Двухконечная очередь»):
Дек - особый вид очереди. Дек (от англ. deq - double ended queue,т.е очередь с двумя концами) - это такой последовательный список, в котором как включение, так и исключение элементов может осуществляться с любого из двух концов списка. Частный случай дека - дек с ограниченным входом и дек с ограниченным выходом. Логическая и физическая структуры дека аналогичны логической и физической структуре кольцевой FIFO-очереди.
Смоделировать:
1) на основе ссылочного типа «Линейный двусвязный список»;
2) на основе динамического массива(ов).
Часть Г2. Создать приложение (консольное, на C или Delphi), позволяющее выбрать и выполнить следующие действия над деком (только с помощью выше перечисленных базовых операций! Без прямого обращения к элементам списка/массива):
- очистить дек (освободить память);
- добавить элементы из текстового файла;
- добавить один элемент, на основе данных введенных в интерактивном режиме (с клавиатуры);
- обработать (удалить) N элементов дека; например:
i:=0; // подсчет удаленных
While not IsEmpty(Deq) and (i<N) do // если дек не пуст и не все N удалены
Begin
info:=GetFirst(Deq); inc(i); //изъять первый элемент из тек.головы и увеличить счетчик i
End;
- поменять направление (поменять «роль» обоих концов: «голова» ßà «хвост»);
- фильтр: разделить дек на два: с элементами удовлетворяющими и с неудовлетворяющими условию поиска, указанному в списке задач по вариантам (стр.3).
Все операции выполнять с текущего конца-головы и после каждой операции выводить содержимое дека в лог-файл (тоже начиная с текущего конца-головы), при добавлении элемента предусмотреть его коррекцию в соответствии с условием коррекции из списка задач по вариантам (стр.3).
На основе созданного нового типа решить задачу:
Исходные данные: Имеются сведения об экспортируемых товарах: наименование, страна-экспортер, срок поставки и количество товара. Условие поиска: Товары, срок поставки которых - до 01 июля текущего года. Коррекция: Номер месяца 1-12, дней не более 28-31 в соответствии с месяцем.