|
Posledná zmena: 8.10.2002
|
množiny
|
Množiny
funkcia vytvorí z množiny
reťazec
|
|
function vypis(const mn:mnozina):string;
var
i:baza;
begin
Result:='[';
for i:=low(baza) to high(baza) do
if i in mn then
Result:=Result+','+IntToStr(i);
Result:=Result+']';
if Result[2]=',' then delete(Result,2,1);
end;
|
náhodná množina
|
náhodné generovanie množiny:
pre každý prvok "hodíme
mincu" - podľa výsledku zaradíme
/ nezaradíme
do výsledku
|
function generuj:mnozina;
var
i:baza;
begin
Result:=[];
for i:=low(baza) to high(baza) do
if random(2)=0 then Result:=Result+[i];
end;
|
počet prvkov množiny
|
|
function pocet(const mn:mnozina):integer;
var
i:baza;
begin
Result:=0;
for i:=low(baza) to high(baza) do
if i in mn then inc(Result);
end;
|
párne prvky
|
funkcia vráti len všetky párne
čísla
|
function parne(const mn:mnozina):mnozina;
var
i:baza;
begin
Result:=[];
for i:=low(baza) to high(baza) do
if (i mod 2=0)and(i in mn) then
Result:=Result+[i];
end;
|
každý druhý prvok
|
funkcia vráti každý druhý
prvok množiny
napr. parne2([1,2,3,5,6,7,9,10])
vráti [2,5,7,10]
|
function parne2(const mn:mnozina):mnozina;
var
i,j:baza;
begin
Result:=[]; j:=0;
for i:=low(baza) to high(baza) do
if i in mn then begin
inc(j);
if j mod 2=0 then
Result:=Result+[i];
end;
end;
|
nepárne čísla z množiny
|
funkcia vráti všetky nepárne
čísla z danej množiny
dalo by sa aj
Result:=mn-parne(mn);
|
function neparne(const mn:mnozina):mnozina;
var
i:baza;
begin
Result:=[];
for i:=low(baza) to high(baza) do
if odd(i)and(i in mn) then
Result:=Result+[i];
end;
|
množinový doplnok
|
pozor! častou chybou je zápis
Result:=[baza]-mn;
|
function doplnok(const mn:mnozina):mnozina;
begin
Result:=[low(baza)..high(baza)]-mn;
end;
|
prienik
|
prienik dvoch množín bez množinovej
operácie *
dalo by sa aj napr.
Result:=a-(a-b);
|
function prienik(const a,b:mnozina):mnozina;
var
i:baza;
begin
Result:=[];
for i:=low(baza) to high(baza) do
if (i in a)and(i in b) then
Result:=Result+[i];
end;
|
náhodná množina
|
funkcia vygeneruje náhodnú
n-prvkovú množinu
|
function nahodne(n:integer):mnozina;
var
i,k:integer;
p:array[1..50] of baza;
begin
for i:=1 to 50 do p[i]:=i;
k:=50; Result:=[];
while n>0 do begin
i:=random(k)+1;
Result:=Result+[p[i]];
p[i]:=p[k]; dec(k); dec(n);
end;
end;
|
písmená v reťazci
|
funkcia boli zistí, ktoré
písmená sa vyskytli v zadanom
znakovom reťazci (nebudeme rozlišovať malé
a veľké)
chceme podmožinu ['a'..'z']
|
function boli(s:string):zmnozina;
var
i:integer;
begin
s:=LowerCase(s); Result:=[];
for i:=1 to length(s) do
Result:=Result+[s[i]];
Result:=Result*['a'..'z'];
end;
|
chýbajúce písmená
|
ako predchádzajúca úloha,
ale zistiť, ktoré chýbajú
dalo by sa aj
Result:=['a'..'z']-boli(s);
|
function neboli(s:string):zmnozina;
var
i:integer;
begin
s:=LowerCase(s); Result:=['a'..'z'];
for i:=1 to length(s) do
Result:=Result-[s[i]];
end;
|
znaky v súbore
|
funkcia zistí, ktoré znaky
sa v textovom súbore vyskytli aspoň raz
zaujímajú nás znaky
z [' '..#255]
|
function bolivsubore(s:string):zmnozina;
var
t:TextFile;
z:char;
begin
AssignFile(t,s); Reset(t);
Result:=[];
while not eof(t) do begin
read(t,z); Result:=Result+[z];
end;
CloseFile(t);
Result:=Result*[' '..#255];
end;
|
z množiny reťazec
|
funkcia vypis z množiny znakov
vytvorí reťazec reprezentujúci
danú množinu, napr. v tvare
['2','D','X','a','b']
|
function vypis(const mn:zmnozina):string;
var
z:char;
begin
Result:='[';
for z:=' ' to #255 do
if z in mn then
Result:=Result+','''+z+'''';
Result:=Result+']';
if Result[2]=',' then delete(Result,2,1);
end;
|
z množiny reťaze
|
funkcia vypis2 z množiny znakov vytvorí
reťazec len zo znakov v množine
|
function vypis2(const mn:zmnozina):string;
var
z:char;
begin
Result:='';
for z:=' ' to #255 do
if z in mn then
Result:=Result+z;
end;
|
počet prvkov
|
funkcia pocet zistí počet
prvkov množiny znakov
|
function pocet(const mn:zmnozina):integer;
var
z:char;
begin
Result:=0;
for z:=' ' to #255 do
if z in mn then inc(Result);
end;
|
Ďalšie úlohy
- funkcia pre zadané n vytvorí
množinu všetkých deliteľov n, ktoré
sú menšie ako 256
- vytvoriť množinu všetkých čísel
do 255, ktoré obsahujú cifru 3
- vytvoriť množinu všetkých čísel
do 255, v ktorej pre všetky prvky platí,
že v ich dvojkovom zápise je párny počet
cifier 0 aj 1 (vymyslite si aj iné podmienky,
napr. rovnaký počet 0 a 1 a pod.)
|
© 2002 AB, KVI blaho@fmph.uniba.sk
|