Операции над множествами




Информатика

Предложением будем называть любой набор символов до 255 знаков. В конце может стоять точка. «слова» разделяются пробелом или запятой.

Пример в качестве разделителя пробел и узнать кол – во слов:
//процедуры удаления пробелов в начале и в конце строки

Procedure Del_Sp_L(var s:string);
Begin
While s[1]=’ ’ do

Delete(s,1,1);
end;

Procedure Del_Sp_R(var s:string);
Begin
While s[length(S)]=’ ’ do

Delete(s, length(S),1);
end;

//сколько слов начинается заданной буквой

Program Ex2_1;

Var

S:String;

I,k:Byte;

C:char;

Begin

Write(‘s=’);Readln(s);

Write(‘c=’);readln(c);

Del_sp_l(s);

If s[1]=c then k:=1;

Else k:=0;

For i:=2 to length(s) – 1do

If s[i]=’ ’ and s[i+1]=c then

Inc(k);

Writeln(‘k=’,k);

End.

Комбинированные типы

Комбинированны тип дает возможность построение структур данных, произвольной природы. Это произвольный тип паскаля, значение которгго состоят из нескольких компонентов, но в отличие от массива эти компоненты могут иметь разные типы. Доступ к ним осуществляеться не по номерам как в массиве, а по именам. Значения комбинированного типа называеться, записями. Любой фиксированный комбинированный тип задает некий шаблон структуры значения данного типа, каждый элемент этого шаблона может иметь соственную иногда, довольно сложную структуру. Значения комбинированного типа это структура данных, содержащяя фиксированное число компонентов, называемых полями. Каждому полю записи, даеться свое имя и тип значения этого поля. Никаких огранечений на тип поля записи не накладываеться, поэтому компоненты записи в вою очередь могут быть записями и т.п. Тоесть значения комбинированного типа может иметь иерархичекую структуру. При этом область действия имени каждого поля, сама внутренняя часть записи, которой оно определяеться. Все имена полей записи на одом уровне должны быть различные.

 

Пусть необхадимо выполнить действия над комплексными числами вида a+ib, i^2= – 1. Так как в паскале нет необходимиго типа то его можно внести самостоятельно. При задания комбинированного типа, будем исходить из следующих правил:

<комбинированный тип>::=Record <список полей> end;

<список полей>::=<секция записи>|{;<секция записи>}

<секция записи>::=<имя поля>{,<имя поля>}:<тип>

Type Compl=

Record

Re:real;

Im:real;

end;

Var x,y:Compl;

x:=3.2+i1.4;

x.Re:=3.2;

y.Im:=1.4;

y:=x;

 

Пример//вычеслить сумму разность и т.п в комплексном пространестве.

Var x,y,u,v,w:Compl;

Begin

Readln(x.re,x,im);

readln(y.re,y.im);

u.re:=x.re+y.re;

u.im:=x.im+y.im;

v.re:=x.re – y.re;

v.im:=x.im – y.im;

w.re:=x.re*y.re – x.im*y.im;

w.im:=x.re*y.im+y.re*x.im;

End.

Оператор присоеденения

 

With r1,r2,… do s;

With r1 do with r2 do

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

 

Вариантная запись

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

<список полей>:=<постоянное поле>|<вариантное поле>

Вариантное поле по структуре похож на оператор выбора:

case <селектор>:<тип селектора> of <элементы списка вариантов>

Точное описание смотри в GOOGLE.

Пример:

 

Type Rec_Type=

Revord

Dlina:byte;

case mera_Dl: char of
‘д’,’Д’:(Inches:Word);

‘с’,’С’:(Santimeters:LongInt);

‘?’:(Comment1,Comment2:string)

end;

// в данном примере два фиксированных поля: длина и мера длины в зависимости от меры длины будут разные наборы для record

 

Множественный тип

В паскале допускаеться только конечные множества, при чем все элементы множества должны быть значениями базового типа(любой скалярный, кроме типа real). Если в качетве базового используеться интеджер то подрузумеваеться тип диапозона ограниченный минимальным и максимальным целыми числами, определяемые реализацией. Конкретные значения множественного типа, задаються с помощью конструктора множеств. Тоесть список элементов в квадратных скобках.

[ ] – пустое множество

[1,3,4,7] – множество целых чисел

[‘s’,’f’,’g’] – множество букв

[1,К] – тоесть если К=3 => 1,3 если К=1 => 1,1 тоесть 1

Как и в теории множеств считаеться порядок перечесления элементов в множестве не играет роли и каждый элемент учитываеться один раз.

[1,2,3,2..5,4,6]

[1,2,3,4,5,6]

[1..6]

Задаие множественного типа:

<множественный тип>::=set of <базовый тип>

Допускаеться присваивание переменым множественного типа значений соответствуюшего типа.

 

Операции над множествами

Это двуместные операции, операндами которых являються константы переменные или выражения множественного типа

A:=[1,2,3,4,5]

B:=[2,5,6,7,8]

C:=A+B; {[1..8]}

C:=A*B; {[2,5]}

C:=A – B; {[1,3,4]}

Приоретет операций над множествами анологичен приоретету арифмитических операций. >_<

Операции отношения

математческая запись || паскаль

А=В||A=B

A!=B||A<>B

В включено в А||A>=B

X принадлежит А||A in B

Результатом этих операций будет true or false

Примеры

 

Ввести два множества малых латинских букв. Получить их объеденение, пересечение и разность. Признаком конца ввода являеться *.

Program Ex_23;

Type

Letters=’a’..’z’;

Set_Let=Set of Letters;//множество

var A,B,C:Set_Let;

Procedure In_set(var D:Set_let);

Var

c:char;

Begin

D:=[];

Readln(c);

while (c<>’*’) do

Begin

if c in [‘a’..’z’] then

d:=d+[c];

readln(c);

end;

end;

Procedure Out_set(D:set_let);

Var

c:Letters;

Begin

for c:=’a’ to ‘z’ do

If c in D then

write(c);

end;

Begin

write(‘A=’);In_set(a);

write(‘B=’);In_set(b);

c:=a – b;

write(‘A – B’); Out_Set(c);

Etc.

End.

Какие символы есть в строке.

 

Program Ex_24;

Var

s:string;

a:set of char;

c:char;

Begin

readln(S);

for i:=1 to length(s) fo

A:=A+[s[i]];



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-13 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: