Лабораторная работа №10 множества цель работы: Изучить принципы работы с множествами. Общие сведения - umotnas.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Лабораторная работа №6 обработка одномерных массивов цель работы... 1 80.4kb.
Лабораторная работа Использование стандартных компонентов в C++ Builder 1 85.8kb.
Лабораторная работа Использование цифрового осциллографа gds-840C... 1 81.03kb.
Лабораторная работа №2 цикл карно цель работы: изучение работы идеальной... 1 40.65kb.
Лабораторная работа №2 «Полярная система координат» 1 58.37kb.
Лабораторная работа №1 Создание текстового документа. Форматирование. 1 60.41kb.
Лабораторная работа №3 логические функции в excel цель работы: Изучить... 1 235.85kb.
Лабораторная работа №13 тема : Связанный элемент управления ListView 1 77.92kb.
Лабораторная работа №2 «Поиск литературных источников. Работа с библиотечными... 1 18.61kb.
Лабораторная работа № Разработка моделей idef0 Порядок выполнения... 1 63.77kb.
Лабораторная работа №7 диод ганна цель работы: изучить физический... 1 330.06kb.
Уроків з теми «Множини та операції над ними» 2 275.03kb.
Викторина для любознательных: «Занимательная биология» 1 9.92kb.

Лабораторная работа №10 множества цель работы: Изучить принципы работы с множествами. - страница №1/1

Лабораторная работа №10

МНОЖЕСТВА
Цель работы:

Изучить принципы работы с множествами.


Общие сведения:

Понятие множества в языке Паскаль основывается на математическом представлении о конечных множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Максимальное множество состоит из 256 элементов.

Тип элементов, составляющих множество, называется базовым типом.
SetType = Set Of BaseType; { где SetType - множественный тип, ВaseType - базовый тип}
Множественный тип описывается с помощью служебных слов Set Of, например:

Type

<имя множества> = set of <тип компонент>;

Var

<переменная>:<имя множества>;

Type

SetType = Set Of 'A'..'D';

Var

mySet: SetType;

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

Var otherSet: Set Of 0..7;
Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:

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

[ ] – пустое множество (не содержит элементов);

[2, 3, 5, 7, 11] – множество простых чисел от 2 до 11.

[‘A’ .. ‘Z’] – множество заглавных латинских букв.

[1..10, 100..110] – множество целых чисел от 1 до 10 и от 100 до 110.

[Pn, Vt, Sr] – множество из 3-х элементов перечислимого типа.

[X .. 5*X] – множество целых чисел от текущего значения X до значения выражения 5*X.


Порядок перечисления элементов в множестве не играет роли. Каждый элемент учитывается только один раз. Например, множества [1, 2, 3] и [1, 3, 2] – это одно и тоже множество.
Множество включает в себя набор элементов базового типа, все подмножества данного множества, а также пустое подмножество. Так, переменная Т множественного типа

Var T: Set Of 1..3;

может принимать восемь различных значений: [ ] [1] [2] [3] [1,2] [1,3] [2,3] [1,2,3]


Допустимые операции с множествами:

Пусть заданы 3 множества с одинаковым базовым типом: A, B и C...



  1. Объединение множеств (C := A + B).

Результат - множество, которое состоит из элементов, принадлежащих хотя бы одному из множеств.

A = ['A', 'B']

B = ['A', 'D']

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





  1. Пересечение множеств (C := A * B)

Результат - множество, состоящее из элементов, принадлежащих каждому из множеств

A = ['A','D']

B = ['A','B','C']

C = ['A']



  1. Разность множеств (C := A - B)

Результат - множество, состоящее из тех элементов первого множества, которые не принадлежат второму


A = ['A','B','C']

B = ['A','B']

C = ['C']




  1. тождественность (=): проверка на эквивалентность двух множеств

['A','B'] = ['A','C'] вернет False

  1. нетождественность (<>): проверка на неэквивалентность двух множеств

['A','B'] <> ['A','C'] вернет True

  1. содержится в (<=): проверка того, является ли левое множество подмножеством правого

['B'] <= ['B','C'] вернет True

  1. содержит (>=): проверка того, является ли правое множество подмножеством левого

['C','D'] >= ['A'] вернет False

  1. In: проверка принадлежности элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Результат выполнения этой операции - булевский.

'A' In ['A', 'B'] вернет True

2 In [1, 3, 6] вернет False

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

Отрицательные стороны: отсутствуют средства ввода-вывода элементов.


Пример №1 Заполнить множество A путем ввода n значений:

const n=5;

var A: set of 1 ..200;

j,x : integer;

begin

A:=[];


for j := 1 to n do

begin


readln(x);

A:=A+[x]


end;

for x := 1 to 200 do

if x in A then writeln(x);

end.
Пример №2 Из введенной последовательности символов, признаком конца которой является '0',

сформировать множество заглавных и строчных латинских букв.
var c: char;

a, pl: set of 'A'..'Z';

b, sl: set of 'a'..'z';

i: char;

Begin
pl:= [0];

sl:= [0];

repeat
read(c);
if [c] in a then pl:=pl+[c];

if [c] in b then sl:=sl+[c];

until [c]='0';

 for i:='A' to 'Z' do

if [i] in pl then write(i:3);

for i:='a' to 'z' do

 if [i] in sl then write(i:3);

End.
Пример№3 Ввести строку символов, состоящую из латинских букв, символов и пробелов. Осуществить проверку правильности введенных символов.


Program stroka;

Var


Str: string;

L: byte;


Tru: boolean;

Begin


Writeln (‘Введите строку’)

Readln (str);

L:=Length (Str);

Tru:= L>0;

While Tru and (L>0) do

Begin


Tru:=Str[L] in [‘0’,’9’’,A’..’Z’,’a’..’z’,’ ‘];

Dec (L)


End;

If Tru then

WriteLn (‘Правильная строка’)

Else WriteLn (‘Неправильная строка’);

End.
Пример№4 Дан текст (например, 5a7233111bge2257cde.) Признаком конца текста является точка. Вывести на экран цифры, которые встречаются в тексте.
program mnog3;

var z: SET OF 0..9;

k,i:integer;

si:char;


begin

readln;


write('=>');

z:=[ ];


repeat

read(si);

k:=ord(si)-ord('0');

if k in [0..9] then z:=z+[k]

until si='.';

if z=[ ] then writeln ('В тексте нет цифр')

else begin

write('В тексте имеются следующие цифры:');

for i:=1 to 9 do

if i in z then write (i:2);

writeln;

end;


end.
Пояснение функция Ord(x) возвращает порядковый номер величины x.
Порядок выполнения работы:

  1. Изучить описание лабораторной работы.

  2. Разобрать примеры программ

  3. Решить задачу по индивидуальному варианту

  4. Продемонстрировать результаты выполнения работы преподавателю.

Варианты заданий:




Аргентов

Бабкин


Подсчитать общее количество букв X, Y, Z в исходном тексте, оканчивающемся точкой



Немов

Малов


Из множества латинских букв создать множество, которое состоит из символов, не входящих во множество символов вашего имени. Вывести созданное множество на экран



Столяров

Тарасова


Имеются три множества символьного типа, которые заданы своими конструкторами: Y1=['A','B','D','R','M'];

Y2=['R','A','H','D'];

Y3=['A','R'];

Сформировать новое множество: X=(Y1*Y2)+(Y1\Y2). Вывести на печать полученное множество x.





Гусарков

Семагина


Из множества целых чисел 1..20 выделить: множество чисел, делящихся без остатка на 6;



Алешин

Сергеева


Из множества целых чисел 1..20 выделить: множество чисел, делящихся без остатка или на 2, или на 3



Попов

Болотнов


Напечатать в возрастающем порядке все цифры, не входящие в десятичную запись натурального числа n.



Кичигин

Дрюпина


Дан текст из строчных латинских букв, за которым следует точка. Определить, каких букв - гласных (a, e, i, o, u) или согласных - больше в этом тексте.



Курочкин

Борисов


Напечатать в убывающем порядке все цифры, не входящие в десятичную запись натурального числа n.



Култышев

Сафиуллин



Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст не менее двух раз;



Тантай

Казаков


Дан текст из строчных латинских букв, за которым следует точка. Напечатать первые вхождения букв в текст (без повторений), сохраняя их взаимный порядок;



Гостев

Ахмадиев


Дан текст на английском языке. Найти количество согласных букв в последнем слове.



Сайгушева

Каштанов


Дан текст из строчных латинских букв, за которым следует точка. Напечатать все буквы, входящие в текст по одному разу;



Хусаинова

Салдушкин



Подсчитать количество чётных цифр в исходной символьной строке и распечатать все, кроме пробелов, знаков операций и знаков препинания.



Елистратова

Лисовцев


Сформировать множество, в которое входят только латинские буквы, встретившиеся во входной строке, и множество знаков препинания из входной строки.