![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа № 10
Тема: МНОЖЕСТВА Цель работы: освоение приемов объявления и использование при решении задач структуры данных – множество. Образец решения задачи. Задача. Пусть задано множество А целых чисел. Создать множество В из элементов множества А, кратных 5. Вывести на печать множество В. Постановка задачи. Входные данные. < Исходное> множество – А (множество целых чисел). Выходные данные. < Конечное> множество – В (множество целых чисел, кратных 5). Алгоритм. 1. Задать < Исходное> множество целых чисел. 2. Сформировать < Конечное> множество целых чисел, кратных 5. 3. Вывести на печать < Конечное> множество. Текст программы. Модуль 1. unit op; Interface
Type tSetByte= set of byte;
Implementation End. Модуль 2. unit obrabotka; Interface uses op;
procedure sozdanie(var BB: tSetByte; AA: tSetByte; krat: byte); procedure print(var BB: tSetByte);
Implementation procedure sozdanie; Var i: byte; AA: mn; Begin BB: =[]; // создали пустое множество for i: =0 to 255 do // для каждого значения из допустимого диапазона (тип byte) if (i in AA) and (i mod krat =0) then // число i входит в множество AA и кратно числу krat BB: =BB+[i]; // добавили к множеству BB множество состоящее из одного значения (число i) End; procedure print; Var i: byte; Begin for i: =0 to 255 do // для каждого значения из допустимого диапазона (тип byte) if (i in BB) then // значение i входит в множество Write(i, ’ ’) // выводим его и пробел после End; End. Основная программа. Uses op, obrabotka; Var A, B: tSetByte; Begin A: =[2, 4, 6, 12, 25..30, 32, 40..45, 90, 125]; // сконструировали множество из 17 элементов sozdanie(B, A, 5); // создали множество B из элементов множества A кратных 5 print(B) // вывели элементы множества End.
Примечание: Тип множество часто используют при решении задач на строки. Например, создают множество символов—разделителей слов для поиска начала и конца слова. Конструктор множества можно использовать в разделе констант при создании типизированных констант: Type tSetChar= set of char; Const Razdelit: tSetChar=[’ ’, ’, ’, ’.’, ’! ’, ’? ’, ’: ’, ’; ’]; // символы—разделители Задания для самостоятельного решения. Вариант 1. 1. Пусть заданы множество А и множество В целых чисел, вывести напечатать общие элементы этих множеств. 2. Пусть задано множество А, напечатать в алфавитном порядке все элементы этого множества, входящих в множество letters=[’a’.. ’z’]. 3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все глухие согласные буквы, которые входят хотя бы в одно слово. Вариант 2. 1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы этих множеств. 2. Пусть задано множество А, напечатать в алфавитном порядке все элементы этого множества, входящих в множество letters=[’a’.. ’я’]. 3. Пусть задано описание type natur=1..maxint. Написать программу, подсчитывающую количество различных (значащих) цифр в десятичной записи натурального числа n. Вариант 3. 1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы множества А, которые не входят в множество В. 2. Пусть задано множество А, напечатать в порядке возрастания все элементы этого множества, входящих в множество letters=[’0’.. ’9’]. 3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово. Вариант 4. 1. Пусть заданы множество А и множество В латинских букв, вывести на печать общие элементы этих множеств. 2. Пусть задано множество А, напечатать в порядке убывания все четные элементы этого множества, входящих в множество letters=[0..100]. 3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все глухие согласные буквы, которые входят хотя бы в одно четное слово. Вариант 5. 1. Пусть заданы множество А и множество В целых чисел, вывести на печать все элементы множества В, которые не входят в множество А. 2. Пусть задано множество А, напечатать в алфавитном порядке все согласные буквы этого множества, входящих в множество letters=[’a’.. ’я’]. 3. Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст по одному разу. Вариант 6. 1. Пусть заданы множества А, В, С, вывести на печать общие элементы всех множеств. 2. Пусть задано множество А, напечатать в порядке убывания все элементы кратные 3 этого множества, входящих в множество letters=[10..200]. 3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово. Вариант 7. 1. Пусть заданы множества А, В, С, вывести на печать все элементы этих множеств. 2. Написать программу, печатающую в возрастающем порядке все цифры, не входящие в десятичную запись натурального числа n. 3. Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст не менее двух раз. Вариант 8. 1. Пусть заданы множества А, В, С, вывести на печать все элементы, входящие во множество А, но не входящие во множества В и С. 2. Пусть задано множество letters=[2..100]. Необходимо сформировать новое множество из элементов заданного, кратных 3 или 5. 3. Дана непустая последовательность слов из строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят в каждое слово. Вариант 9. 1. Пусть заданы множества А, В, С, вывести на печать все общие элементы множеств С и А, но не входящие во множество В. 2. Пусть заданы множества А, В, С, вывести на печать все элементы, входящие во множества А и В, но не входящие во множество С. 3. Пусть задано множество А, напечатать в порядке возрастания все элементы кратные 5 этого множества, входящих в множество letters=[5..200]. Вариант 10. 1. Пусть заданы множества А, В, С, вывести на печать все общие элементы множеств С и В, но не входящие во множество А. 2. Пусть задано множество А, напечатать в порядке убывания все элементы кратные 7 этого множества, входящих в множество letters=[15..100]. 3. Дан текст из строчных русских букв, за которым следует точка. Напечатать все гласные буквы, входящие в текст более двух раз. Примечание: гласные буквы – а, е, и, о, у, ы, э, ю, я (ė обычно не входит в литерный тип); согласные – все остальные буквы, кроме й, ь, ъ; звонкие согласные – б, в, г, д, ж, з, л, м, н, р; глухие согласные – к, п, с, т, ф, х, ц, ч, ш, щ. Контрольные вопросы: 1. Может быть базовым типом, тип integer? 2. Может ли быть базовым типом, тип char? 3. Как определить базовый тип? 4. Если задано описание set of 1...3; какие значения может принимать переменная такого множественного типа? 5. Пусть chars1: =[ ’a’, ’x’, ’e’]; chars2: =[’x’]; chars3: =[ ’a’..’z’]; Определите истинность высказываний: а). chars1 < > chars2; б). chars1 > = chars2; в). chars1 < = chars3; г). ’a’ in chars1; д). not (‘q’ in chars2). 6. Какие из следующих конструкций являются множествами (в смысле языка Паскаль), а какие нет и почему? (1) [9, 6, 3, 0]; (2) [2..3, 5, 7]; (3) [1..15, 4..18]; (4) [’*’, ’*’]; (5) [0..0]; (6) [true..false]; (7) [2, sgrt(9)]; (8) [’=’, ’> =’, ’> ’]; (9) [[ ], [5]]; 7. Вычислите значения выражений: (1) [1, 3, 5]*[2, 4]; (2) [1, 3, 5]+[2, 4]; (3) [1, 3, 5]-[2, 4];
|