КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Программа работы. 1. Создать новый проект в меню FileðNewðVCL Forms Application, добавить к нему новый модуль (FileðNewðUnit) и сохранить все файлы в папке с1. Создать новый проект в меню FileðNewðVCL Forms Application, добавить к нему новый модуль (FileðNewðUnit) и сохранить все файлы в папке с именем ‘…\Лабораторная работа № 15’. 2. В заголовочной части второго модуля объявить класса TQueue и все его методы в соответствии с ADT – форматом, используя пространство имен MyQueue. 3. Создать на форме компоненты ListBox1¸ListBox3, Edit1 и кнопку Button1. Рис. 6. Примерное расположение компонентов на форме 4. Написать программу, которая разбивала бы на пары участников праздничной дискотеки. Список всех приглашенных храниться в файле 'Дискотека.txt', которые записаны последовательно на каждой строке в следующем формате: Ж Анжелика Варум М Леонид Агутин. Для загрузки этой информации из файла можно воспользоваться методом LoadFromFile свойства Items компонента ListBox1 в конструкторе формы FormCreate. Чтобы этот список не был виден на форме, свойство Visible этого компонента необходимо установить в false. 5. В обработчике нажатия кнопки Button1 объявить две объектные переменные Men и Women с типом TQueue для хранения данных типа AnsiString, и записать в них имена и фамилии приглашенных в зависимости от их пола. После этого, сформировать пары танцующих в формате «Мужчина + Женщина» в компоненте ListBox2 до тех пор, пока одна из очередей не окажется пустой. Затем вывести в компонент Edit1 того, кто будет приглашен на танец следующим, а в компонент ListBox3 – всех, кто остался без пары, при условии, что одно из очередь осталась не пустой. 6. Запустить программу на выполнение и записать в отчет расположение компонентов на форме, конструктор формы, обработчик нажатия кнопки Button1 и полученные результаты выполнения программы. 7. Ответить на контрольный вопрос, записав в отчет разработанный метод, обработчик его использования и результат выполнения программы.
Контрольные вопросы 1. Записать ADT – формат и объявление класса TQueue. 2. Записать реализацию метода Insert класса TQueue и объяснить его работу. 3. Записать реализацию метода Delete класса TQueue и объяснить его работу. 4. Записать реализацию метода Front класса TQueue и объяснить его работу. 5. Записать реализацию метода Empty класса TQueue и объяснить его работу. 6. Записать реализацию метода Full класса TQueue и объяснить его работу. 7. Записать реализацию метода Clear класса TQueue и объяснить его работу. 8. Написать программу, считывающую последовательность n целых чисел из массива, помещая все честные числа в одну очередь, а нечетные – в другую. Выведите содержание каждой очереди в компоненты Edit1 и Edit2. 9. Написать программу, которая, используя операции с очередью, находила бы первое появление заданного элемента в ней и перемещала бы его в вершину очереди, сохраняя упорядочение для остальных элементов. 10. Написать программу, которая, используя операции с очередь, находила бы последнее появление заданного элемента в ней и перемещала бы его в начало очереди, сохраняя упорядочение для остальных элементов. 11. Написать программу, которая, используя операции с очередью, удаляет из него первый заданный элемент. 12. Записать и протестировать в программе оператор равно для очереди. 13. Записать и протестировать в программе оператор не равно для очереди. 14. Записать и протестировать в программе оператор присвоения для очереди. 15. Что будет содержаться в свойстве Text компонента Edit1 после выполнения следующей программы? Ответ объяснить в пошаговом режиме. template<classT> void Example() { TQueue<T> Queue; int X, Y; Y = 3; Queue.Insert(5); Queue.Insert(2); Y = Queue.Front(); Queue.Insert(Y); X = Queue.Delete(); Queue.Insert(X); X = Queue.Delete(); Queue.Insert(Y); Y = Queue.Delete(); Queue.Insert(X); Queue.Insert(Y); while (!Queue.Empty()) Edit1.Text := Edit1.Text+IntToStr(Queue.Delete()); }
16. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередями? Объясните Ваш выбор. template <class T> void UnKnown (TQueue<T> &Queue1, TQueue<T> &Queue2) { TQueue<T> Temp; T X; while (!Queue1.Empty()) { X = Queue1.Delete(); Temp.Insert(X); }; while (!Temp.Empty()) { X = Temp.Delete(); Queue1.Insert(X); Queue2.Insert(X); } } 17. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередями? Объясните Ваш выбор.
template <class T> void UnKnown (TQueue<T> &Queue1, TQueue<T> &Queue2) { T Queue<T> Temp; T X; while (!Queue1.Empty()) { X = Queue1.Delete(); Temp.Insert(X); }; while (!Queue2.Empty()) { X = Queue2.Delete(); Temp.Insert(X); }; Queue2.Clear(); while (!Temp.Empty()) { X = Temp.Delete(); Queue1.Insert(X); Queue2.Insert(X); }; }
18. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередью? Объясните Ваш выбор.
template <class T> void UnKnown (TQueue<T> &Queue1, TQueue<T> &Queue2) { T Queue<T> Temp; T X; while (!Queue2.Empty()) { X = Queue2.Delete(); Temp.Insert(X); }; while (!Queue1.Empty()) { X = Queue1.Delete(); }; while (!Temp.Empty()) { X = Temp.Delete(); Queue1.Insert(X); Queue2.Insert(X); }; }
19. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередью? Объясните Ваш выбор.
template <class T> void UnKnown (TQueue<T> &Queue) { TStack<T> Temp; T X; while (!Queue.Empty()) { X = Queue.Delete(); Temp.Push(X); }; while (!Temp.Empty()) { X = Temp.Pop(); Queue1.Insert(X); }; }
20. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередью? Объясните Ваш выбор.
template <class T> void UnKnown (TQueue<T> &Queue1, TQueue<T> &Queue2) { T Stack<T> Temp; T X; while (!Queue1.Empty()) { X = Queue1.Delete(); Temp.Push(X); }; while (!Queue2.Empty()) { X = Queue2.Delete(); Temp.Push(X); }; while (!Temp.Empty()) { X = Temp.Pop(); Queue1.Insert(X); Queue2.Insert(X); }; } 21. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию с очередью? Объясните Ваш выбор.
template <class T> void UnKnown (TQueue<T> &Queue) { T Queue<T> Temp; T X; while (!Queue.Empty()) { X = Queue.Delete(); Temp.Insert(X); }; while (!Temp.Empty()) { X = Temp.Delete(); Queue.Insert(X); }; }
|