Лабораторная работа № 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.С помощью какой функции можно извлечь порядковый номер элемента в множестве?