1.4. TIPURI DE DATE MULȚIME (SET)
Putem avea multimi de caractere si multimi de numere byte(256 de caractere).
Pentru a declara o multime:
type multime=set of 0..9;
var mc:multime;
ml:set of ‘A’..’Z’;
mk:set of char;
Obs! Constantele de tip multime se numesc constructori.
Un constructor contine intre paranteze patrate elementele membre ale multimii.
Ex!
mc:=[0..2,5..9];
Multimea de litere ia valoarea: ml:=[];{multimea vida}
Multimea de caractere ia valoarea de
mcar:=[a..f,0..3,’+’,’*’];
Operatii cu multimi
Operatia de incluziune: m1<=m2;{verifica daca m1 este inclusa sau egal cu m2}
m1>=m2;{incluziunea inversa}
m1=m2;{egalitatea}
m1<>m2;{diferit}
Obs!Nu exista mai mare strict!>,<;EROARE!
Operatorul de apartenenta!
x in m verfifica daca x apartine multimii m
not (x in m) daca x nu apartine multimii
Operatii cu multimi!
+ reuniunea
m:=m1+m2;
m:=[1..3,5,,9]+[6..8];
* intersectia
mi:=m1*m2;
- diferenta
md:=m1-m2;
Citirea unei multimi:
-se initializeaza multimea cu multime vida
-intr-o structura repetitiva se citeste fiecare element al multimii,si se face reuniune intre vechea multime si multimea formata din elementul curent;
var m:set of byte;
n,i,e:byte;
begin
m:=[];
write('n:=');readln;
for i:=1 to n do begin
write('Elementul ',i,' este:');
readln(e);{elementul curent}
m:=m+[e];
end;
Afisarea unei multimi
-se parcurge cu for multimea elementelor tipului de baza a multimii si utilizand operatorul de apartenenta in se verifica daca elementul curent apartine multimii;
for i:=1 to 255 do
if i in m then write(i,' ');
OBS!Daca m este de tip char,atunci se verifica in functie de codul ASCII!
for i:=1 to 255 do
if chr(i) in m then write(chr(i),' ');
SAU
for c:=chr(0) to chr(255) do
if c in m then write(i)