Лабораторная работа № 8 Множественный тип данных
(4 часа)
Цель работы: Освоить на практике организацию множества, как структуры данных, средствами языка Object Pascal /
Домашнее задание:
1. Изучить организацию типа множество в Object Pascal
(set of < базовый тип >).
2. Освоить операции и стандартные функции, допустимые при работе с множествами.
Порядок выполнения работы.
1. Открыть проект Delphi Structures.
2. Добавить в управляющее главное меню пункт «Лабораторная работа №1», при выборе которого должно появляться окно модуля «Set» (модуль «Set» с формой добавить в проект).
3. Установить на форму модуля Set компоненты, обеспечивающие ввод исходных данных, управляющую кнопку (класса TButton или TBitBtn) и компоненты для вывода результатов на экране в соответствии с вариантом задания таблицы №1.
4. В обработчике события onClick управляющей кнопки на языке
Object Pascal написать фрагмент программы для реализации алгоритма в соответствии с вариантом задания.
Отладить обработчик на тестовых примерах и продемонстрировать работу приложения преподавателю.
5. Составить отчет и защитить работу преподавателю. В отчете обязательно представить блок-схему алгоритма решения задачи.
Таблица 8.1
№ вар. | Текст задачи |
1. | Type Stroka= string[80]; Var s:stroka; Описать функцию Schet(s) , подсчитывающую общее кол-во цифр и знаков '+', '-', '*' ,входящих в строку s. Организовать Windows- приложение в Delphi , в котором исходная строка вводится с клавиатуры с помощью объекта класса TEdit , а результаты обращения к Function Schet вывести в объект класса TLabel. |
2. | Type month= 1..12; Описать функцию CountDays (m:month), определяющую количество дней в месяце m ( невисокосного типа). Организовать Windows- приложение в Delphi , в котором номер месяца вводить с помощью объекта класса TEdit ,а результат обращения к функции CountDays для введенного месяца вывести в объект класса TLabel . |
3. | В языке Паскаль нет стандартной операции , позволяющей узнать, сколько и какие именно элементы входят в некоторое множество. Как реализовать эту операцию другими средствами языка? Пусть имеем описание: Type Lat = set of 'a' .. 'z'; Var А:Lat; Описать: 1)функцию count(А) ,подсчитывающую количество элементов в множестве А ( например: count(['d','q','s']) =3) . 2)процедуру print(A) ,которая выводит на экран в алфавитном порядке все элементы множества А. |
4. | Не используя дополнительных переменных , поменять местами значения переменных- множеств А и В. |
5. | Дан текст из цифр и малых латинских букв, за которым следует точка. Определить, каких букв- гласных( а, е, i, o, u) или согласных больше в этом тексте. Использовать тип множество. |
6. | Описать функцию Digits(n: integer) ,подсчитывающую количество различных(значащих) цифр в десятичной записи натурального числа n . Организовать Windows- приложение , в котором с помощью объекта класса TEdit ввести натуральное n , обратиться к функции Digits для подсчета количества различных цифр в записи числа и вывести полученный результат в объект на форму. Рекомендация. Сначала выделить цифры из числа n и записвть их в множество sd. |
7. | Дан текст из малых латинских букв , за которым следует точка. Организовать программу, которая ищет и выводит: 1) первое вхождение каждой буквы в текст , сохраняя их исходный порядок. 2) все буквы, входящие в текст( на выводе все буквы по одному разу, независимо от того, сколько раз они встречаются в тексте. Рекомендация. В цикле посимвольной обработки текста формируйте множество , в которое войдут все буквы , встречающиеся в этом тексте. |
Контрольные вопросы
1. Что представляет собой структура данных множество?
2.Какие операции допустимы при работе с множествами?
3.Как добавить элемент в множество?
4.Как убрать элемент из множества?
5.Что представляет собой пустое множество?
6.С помощью какой функции можно извлечь порядковый номер элемента в множестве?