КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Программа работы. 1. Создать новый проект в меню FileðNewðVCL Forms Application, добавить к нему новый модуль (FileðNewðUnit) и сохранить все файлы в папке с1. Создать новый проект в меню FileðNewðVCL Forms Application, добавить к нему новый модуль (FileðNewðUnit) и сохранить все файлы в папке с именем ‘…\Лабораторная работа № 14’. 2. В заголовочной части второго модуля объявить класса TStack и все его методы в соответствии с ADT – форматом, используя пространство имен MyStack. 3. Создать на форме компоненты ComboBox1, Edit1 и Edit2. Рис. 6. Примерное расположение компонентов на форме 4. Написать программу, которая проверяла бы, является ли заданная строка палиндромом или нет. Для этого, загрузить в свойство Items компонента ComboBox1 содержимое файла “Палиндромы.txt” с помощью конструктора формы FormCreate, и установить первый элемент списка с помощью свойства ItemIndex. В обработчике OnChange компонента ComboBox1 записать код программы для проверки, является ли строка из свойства Text этого компонента палиндромом или нет. Для очистки строки от служебных символов использовать метод Trim класса AnsiString, а для приведения символов к нижнему регистру – метод LowerCase. Для удаления из исходной строки знаков пробела и препинания использовать строку Signs и метод поиска в ней Pos. Преобразованную строку сохранить в промежуточной переменной, а строку из стека – в свойство Text компонента Edit1. Результат сравнения поместить в компонент Edit2. 5. Запустить программу на выполнение и последовательно проверить, являются ли строки из списка компонента ComboBox1 палиндромами. 6. Записать в отчет расположение компонентов на форме, обработчик изменения компонента ComboBox1 OnChange и все строки из списка в виде таблицы, указав какие из них являются палиндромами, а какие нет. 7. Ответить на контрольный вопрос, записав в отчет разработанный метод, обработчик его использования и результат выполнения программы.
Контрольные вопросы 1. Записать ADT – формат и объявление класса TStack. 2. Записать реализацию метода Push класса TStack и объяснить его работу. 3. Записать реализацию метода Pop класса TStack и объяснить его работу. 4. Записать реализацию метода Peek класса TStack и объяснить его работу. 5. Записать реализацию метода Empty класса TStack и объяснить его работу. 6. Записать реализацию метода Full класса TStack и объяснить его работу. 7. Записать реализацию метода Clear класса TStack и объяснить его работу. 8. Написать программу для преобразования десятичного числа в заданную систему счисления по следующему алгоритму: заданное десятичное число (передается в компоненте Edit1) делится на основание заданной системы счисления (компонент Edit2). Остаток от деления помещается в стек, а целое записывается вместо исходного числа. Деление продолжается до тех пор, пока делимое не станет меньше делителя. Последнее делимое помещается в стек, и затем все числа извлекаются из стека. 9. Написать программу, считывающую последовательность n целых чисел из массива, помещая все честные числа в один стек, а нечетные – в другой. Выведите содержание каждого стека в компоненты Edit1 и Edit2. 10. Написать программу, которая, используя операции со стеком, находила бы первое появление заданного элемента в нем и перемещала бы его в вершину стека, сохраняя упорядочение для остальных элементов. 11. Написать программу, которая, используя операции со стеком, находила бы последнее появление заданного элемента в нем и перемещала бы его в вершину стека, сохраняя упорядочение для остальных элементов. 12. Написать программу, которая, используя операции со стеком, удаляет из него первый заданный элемент. 13. Написать программу, которая выводила буквы вашей фамилии в обратном порядке, используя класс TStack. 14. Записать и протестировать в программе оператор равно для стека. 15. Записать и протестировать в программе оператор не равно для стека. 16. Записать и протестировать в программе оператор присвоения для стека. 17. Что будет содержаться в свойстве Text компонента Edit1 после выполнения следующей программы? Ответ объяснить в пошаговом режиме. template<classT> void Example() { TStack<T> Stack; int X, Y; Y = 5; Stack.Push(8); Stack.Push(9); Y = Stack.Peek(); Stack.Push(Y); X = Stack.Pop(); Stack.Push(22); while (! Stack.Empty()) Edit1.Text := Edit1.Text+IntToStr(Stack.Pop()); } 18. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию со стеками? Объясните Ваш выбор. template<classT> void UnKnown (TStack<T> &Stack1, TStack<T> &Stack2) { TStack<T> Temp; T X; while (!Stack1.Empty()) { X = Stack1.Pop(); Temp.Push(X); }; while (!Temp.Empty()) { X = Temp.Pop(); Stack1.Push(X); Stack2.Push(X); } } 19. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию со стеком? Объясните Ваш выбор. template<classT> void UnKnown(TStack<T> &Stack) { int I, N = 0; vector<T> Mas; while (!Stack.Empty()) { Mas.push_back(Stack.Pop()); N++; }; for (I = 0; I < N; I++) Stack.Push(Mas[I]); } 20. Придумайте название следующей процедуры, которое отражало бы выполняемую ей операцию со стеком? Объясните Ваш выбор. template<classT> void UnKnown(TStack<T> &Stack) { TStack<T> Temp; T X; while (!Stack.Empty()) { X = Stack.Pop(); Temp.Push(X); }; while (!Stack.Empty()) { X = Temp.Pop(); Stack.Push(X); }; }
|