Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Программа работы. 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);

};

}



Поделиться:

Дата добавления: 2015-08-05; просмотров: 43; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты