Помощничек
Главная | Обратная связь


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

Тема: Решение задач на работу с множеством

 

Цель работы: познакомить с понятием "множество" в языке программирования Pascal; выработать навыки работы со структурой данных множество.

Краткие сведения:

Понятие множества в языке ПАСКАЛЬ основывается на математическом представлении о множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом.

Множественный тип описывается с помощью служебных слов Set of, например:

type M= Set of B;

Здесь М - множественный тип, В - базовый тип.

Пример описания переменной множественного типа:

type M= Set of 'A'..'D'; var MS : M;

Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных:

var C : Set of 0..7;

Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:

['A', 'C'] [0, 2, 7] [3, 7, 11..14].

Константа вида [] означает пустое подмножество.

Множество включает в себя набор элементов базового типа, все подм- ножества данного множества, а также пустое подмножество. Если базовый тип, на котором строится множество, имеет К элементов, то число подм- ножеств, входящих в это множество, равно 2 в степени К. Пусть имеется переменная Р интервального типа:

var P : 1..3;

Эта переменная может принимать три различных значения - либо 1, либо 2, либо 3. Переменная Т множественного типа

var T : Set of 1..3;

может принимать восемь различных значений:

[ ] [1,2] [1] [1,3] [2] [2,3] [3] [1,2,3]

Порядок перечисления элементов базового типа в константах безразличен.

Значение переменной множественного типа может быть задано конструкцией вида [T], где T - переменная базового типа.

К переменным и константам множественного типа применимы операции присваивания(:=), объединения(+), пересечения(*) и вычитания(-):

['A','B'] + ['A','D'] даст ['A','B','D'] ['A'] * ['A','B','C'] даст ['A'] ['A','B','C'] - ['A','B'] даст ['C'].

Результат выполнения этих операций есть величина множественного типа.

К множественным величинам применимы операции: тождественность (=), нетождественность (<>), содержится в (<=), содержит (>=). Результат выполнения этих операций имеет логический тип, например:

['A','B'] = ['A','C'] даст FALSE ['A','B'] <> ['A','C'] даст TRUE ['B'] <= ['B','C'] даст TRUE ['C','D'] >= ['A'] даст FALSE.

Кроме этих операций для работы с величинами множественного типа в языке ПАСКАЛЬ используется операция inпроверяющая принадлежность элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Результат выполнения этой операции - булевский. Операция проверки принадлежности элемента множеству часто используется вместо операций отношения, например:

A in ['A', 'B'] даст TRUE, 2 in [1, 3, 6] даст FALSE.

При использовании в программах данных множественного типа выполнение операций происходит над битовыми строками данных. Каждому значению множественного типа в памяти ЭВМ соответствует один двоичный разряд. Например, множество

['A','B','C','D']

представлено в памяти ЭВМ битовой строкой

1 1 1 1.

Подмножества этого множества представлены строками:

['A','B','D'] 1 1 0 1 ['B','C'] 0 1 1 0 ['D'] 0 0 0 1

Величины множественного типа не могут быть элементами списка вво- да - вывода.

В каждой конкретной реализации транслятора с языка ПАСКАЛЬ количество элементов базового типа, на котором строится множество, ограничено. В TURBO PASCAL количество базовых элементов не должно превышать 256.

Инициализация величин множественного типа производится с помощью типизированных констант:

const seLit: Set of 'A'..'D'= [];

Проиллюстрируем применение данных множественного типа на примерах.

 

 

Пример 1. Дан текст. Определить каких букв больше - гласных или согласных.
program example1;

const glasn=['а','е','и','о','у','ы','э','ю','я']; soglas=['б','в','г','д','ж','з','й','л','м', 'н','р','к','п','с','т','ф','х','ц','ч','ш','щ']; var st: string; g,s,i:integer; begin write('Введите строку> '); readln(st); g:=0; s:=0; for i:= 1 to length(st) do if st[i] in glasn then inc(g) else if st[i] in soglas then inc(s); if g> s then writeln('Гласных больше') else if g< s then writeln('Согласных больше') else writeln('Согласных и гласных букв поровну'); readln; end.

Задания:

Вариант 1.

1.Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого специальными символами, которые находятся во множестве [‘ : ‘, ‘ ; ‘, ‘ . ‘, ‘ ? ‘, ‘ ! ‘]. Подсчитать количество разделителей в тексте и вывести слова в столбик без разделителей.

Вариант 2.

Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого пробелами и содержат гласные буквы, которые находятся во множестве [‘ а ‘, ‘ е ‘, ‘ у ‘, ‘ и ‘, ‘ о ‘]. Подсчитать количество слов тексте и вывести из текста те слова, которые содержат хотя бы одну гласную букву.

Вариант 3.

Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого символом *. Подсчитать количество слов в тексте и вывести слова, которые содержат хотя бы один символ множества [‘ w ‘, ‘ x ‘, ‘z‘, ‘ s ‘].

Вариант 4.

Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого символом ‘,’. Подсчитать количество слов в тексте и вывести слова, которые содержат хотя бы один символ множества [‘ r ‘, ‘ t ‘, ‘p‘, ‘ s ‘].

Вариант 5.

Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого символом ‘#’. Подсчитать количество слов в тексте и вывести слова, которые содержат хотя бы один символ множества [‘ q ‘, ‘ w ‘, ‘e‘, ‘ r ‘, ‘ t ‘, ‘y’, ‘u’].

Вариант 6.

Дан текст, который состоит из слов. Слова в тексте отделяются одно от другого символом ‘.’. Подсчитать количество слов в тексте и вывести слова, которые содержат хотя бы один символ множества [‘ 1 ‘, ‘ 2 ‘, ‘3‘, ‘ 4 ‘].

Вариант 7.

Построить два множества: одно из 10 целых чисел из отрезка [0, 40] и второе из 5 целых чисел из отрезка [0, 20]. Вывести на экран те числа, которые встречаются в обоих множествах.

Вариант 8.

Построить два множества: одно из 10 целых чисел из отрезка [0, 40] и второе из 5 целых чисел из отрезка [0, 20]. Вывести на экран те числа, которые встречаются хотя бы в одном множестве.

Вариант 9.

Построить два множества: одно содержит все делители некоторого целого числа N и второе, которое содержит все простые делители того же числа. Вывести на экран делители, которые не являются простыми.

Вариант 10.

Построить два множества: одно из 10 целых чисел из отрезка [0, 40] и второе из 5 целых чисел из отрезка [0, 20]. Вывести на экран те числа, которые не встречаются ни в одном множестве.

Вариант 11.

Построить два множества: одно из букв данного слова Х и второе из букв данного слова У. Вывести на экран те буквы, которые не встречаются ни в одном слове.

Вариант 12.

Построить два множества: одно из букв данного слова Х и второе из букв данного слова У. Вывести на экран те буквы, которые встречаются в обоих словах.

Вариант 13.

Построить два множества: одно из букв данного слова Х и второе из букв данного слова У. Вывести на экран те буквы, которые встречаются хотя бы в одном множестве.

Вариант 14

Имеются три множества символьного типа, которые заданы своими конструкторами:
Y1=['A','B','D','R','H']
Y2=['R','A','H','D']
Y3=['A','R'].
Сформировать новое множество .
Предусмотреть формирование исходных множеств с клавиатуры.

Вариант 15

Подсчитать общее количество цифр и знаков '+', '-', и '*', входящих в строку s.

 

Контрольные вопросы

1. Что такое множество, как оно описывается в языке Pascal?

2. Как описываются типизированные константы типа множество?

3. Как осуществляется ввод-вывод значений переменных типа множество?

4. Какие типы данных используются в качестве базовых при объявлении типа множество?

5. Какие операции определены над множествами?

6. Какие операции допустимы над переменными, заданными перечислением?

7. Какое значение у выражений: а) x in [x]; б) [ ] <= [x,y,z]; в) [x]<>[x,x,x]

 




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.