Тип данных set множество



Скачать 50.85 Kb.
Дата23.11.2012
Размер50.85 Kb.
ТипДокументы

Тип данных set - множество.


В математике часто приходится решать различные задачи с подмножествами некоторого фиксированного множества объектов – учеников класса, букв, чисел, кроликов, домов и т.д. В языке Паскаль для задач подобного рода предусмотрен специальный тип данных - set. Значения переменных этого типа - всевозможные подмножества некоторого базового множества элементов.

Формат описания в разделе var

<имя>:set of <базовое множество>;

Где <имя> – произвольное имя переменной, <базовое множество> перечисляет элементы, которые могут быть включены в множество <имя>.

Примеры объявления переменных типа set и типизированных констант, которые в программе можно использовать так же, как переменные:
Var

a,b:set of char;

d:set of 'A'..'Z'

C:set of 0..9;

E:set of byte;

Const

Alph=['A'..'Z','a'..'z'];

Digits=[0..9];

В разделе объявления переменных после слова of следует указание базового типа - из каких элементов может состоять подмножество. В частности, переменная a может содержать подмножество любых символов, с - любых цифр, d - любые заглавные буквы латинского алфавита, E - любые числа от 0 до 255 и т. д.
В программе переменной - множеству можно присвоить какое - нибудь значение (подмножество), при этом элементы подмножества следует записать по правилам записи констант через запятую, поместив их в квадратные скобки. Вообще в Паскале все подмножества заключаются в квадратные скобки.

Над множествами определены операции '+' (объединение), '-' (исключение), '*'(пересечение).

В логических выражениях можно использовать операции отношения: '<=','>='("'меньшее" - подмножество "большего"), '=', '<>'. '[]' обозначает пустое множество.
Например:

a:=['a'..'d','g','z']; {A: ‘a’,’b’,’c’,’d’,’g’,’z’}

a:=a+['h']; {A: ‘a’,’b’,’c’,’d’,’g’,’z’,’h’}

ch:='j'; {ch имеет тип char}

a:=a+[ch]; {A: ‘a’,’b’,’c’,’d’,’g’,’z’,’h’,’j’}

b:=a*['a','e','f']; {B: ‘a’}
Если необходимо включить в множество один элемент, то вместо операции ‘+’, рекомендуется использовать процедуру Include. Вторую строчку в примере можно переписать так

include(a,’h’);

Аналогично если необходимо исключить из множество один элемент, то вместо операции ‘-’, рекомендуется использовать процедуру exclude, например

exclude(a,’h’);

Можно проверить, принадлежит ли элемент множеству при помощи операции in. Например

if ‘a’ in A then writeln(‘символ а принадлежит множеству A’)

else writeln(‘символ а не принадлежит множеству A’)

Для того, чтобы вывести на экран все элементы, принадлежащие множеству, необходим цикл вида.

For ch:=chr(0) to chr(255) do

if ch in A then writeln(ch);

В данном случае ch – переменная символьного типа, A – set of char.


Пример решения задачи.

Прочитать с клавиатуры 2 строки и вывести на экран все цифры, которые встречаются в каждой из строк, причем ровно по одному разу.

Решение. Сначала удобно найти вообще все такие символы, а затем вывести на экран только цифры. В тексте программы (см. ниже) множество first содержит символы строки, которые встретились в ней ровно один раз, а множество second – символы, которые встретились не менее, чем два раза. Множество x содержит все символы строк, удовлетворяющие заданному условию.

var

ch:char;

i:integer;

s:string;

first,second,x:set of char;

begin
readln(s); first:=[]; second:=[];

for i:=1 to length(s) do

if s[i] in first then include(second,s[i])

else include(first,s[i]);

x:=first-second;
readln(s); first:=[]; second:=[];

for i:=1 to length(s) do

if s[i] in first then include(second,s[i])

else include(first,s[i]);

x:=x*(first-second);
for ch:='0' to '9' do

if ch in x then write(ch);
end.

Задачи:


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

Задача . Какие цифры присутствуют в обеих заданных строках?

Задача . В строке через пробел записаны двузначные числа. Сколько различных двузначных чисел записано в строке?

Задача . Какие символы латинского алфавита присутствуют в первой из заданных строк строк и отсутствуют во второй и третьей?

Задача . Какие простые числа, лежащие в интервале 0..200, присутствуют в текстовом файле?

Задача . Задана текстовая строка. Какие символы встречаются в каждом слове?

Задача . Задан массив, содержащий целые числа из интервала 0..100. Какие числа встречаются в массиве лишь один раз?

Задача . Вывести наименьшее число (больше 1) такое, что в его записи и в записи его квадрата используются одни и те же цифры.

Задача . *Решить ребус МУХА+МУХА=СЛОН, в котором различные буквы соответствуют различным цифрам.

Задача . *Реализовать хранение подмножеств тридцати двух элементов в переменной типа WORD. Реализовать операции сложения, вычитания, умножения, отношений наиболее простым из возможных способов при помощи подпрограмм.

Задача . ***Дана головоломка вида: X+Y=Z, где X, Y, Z, - строки из произвольного числа заглавных латинских букв и цифр (длины строк могут быть разными). Одинаковым буквам соответствуют одинаковые цифры, разным - разные.

ЗАДАНИЕ: Написать программу, решающую головоломку.

ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ:

1. Вводится с клавиатуры строка из трех слов, разделенных пробелами.

2. Выводится на экран одно из решений в виде головоломки с подставленными в нее числами.

3. При отсутствии решений выводится сообщение "Решений нет".

ПРИМЕР: После ввода строки "ABC AEEE АAВС" программа выводит на экран

строку "149 + 1000 = 1149".

Вопросы:


  1. Сколько байт занимает set of char? Set of 0..9?

  2. Как хранится множество в ОЗУ?

  3. Каковы два основных недостатка типа set?

Похожие:

Тип данных set множество icon«простые типы данных. Символьный тип данных» Простые типы данных делятся на порядковые и ве­щественный типы данных
Под порядковым типом понимают тип данных, областью значений которых является упорядоченное счетное множество. Каждому элементу такого...
Тип данных set множество iconСтроковый тип данных
Вы уже познакомились с символьным типом данных char, который позволяет работать с отдельными символами текста. Для обработки более...
Тип данных set множество icon«Перечисляемый тип данных»
Этот тип данных получил название перечисляемого, потому что он задается в виде перечисления некоторых значений. Эти значения образуют...
Тип данных set множество iconТем Виды моделей данных
Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности...
Тип данных set множество icon7-8 классы Модуль 1: Основы теории множеств
С математической точки зрения вместо разных слов можно использовать одно «множество»: множество учеников, множество берез, множество...
Тип данных set множество iconЯзыки программирования. Лекция 7
На прошлой лекции обсуждались арифметические типы данных и перечислимый тип. Перечислимый тип является разновидностью порядкового...
Тип данных set множество iconПонятие базы данных, реляционной базы данных, субд, ключа, отношения
Базовые понятия реляционных баз данных (тип данных, домен, атрибут, кортеж, первичный ключ, отношение)
Тип данных set множество iconКонспект по теме: «Вещественный тип данных»
Определение: Вещественный тип – это простой стандартный тип, предназначенный для хранения подмножества вещественных чисел и выполнения...
Тип данных set множество iconМножества Определение и создание множеств
Множество – структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков...
Тип данных set множество iconТип множество допустимых значений и множество применимых операций к ней
Первоначальные сведения о программировании на языке Pascal. Работа с величинами. Ввод-вывод. Выражения. Линейные алгоритмы
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org