Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут комп’ютерних наук та інформаційних технологій
Кафедра ПЗ
ЗВІТ
Лабораторна робота № 3
з курсу «Дискретна математика»
Тема: " Операції над множинами ”
Виконав: ст. гр. ПІ-12
Прийняв:
Львів-2007
Завдання:
Описати 2 множини цілих чисел та продемонструвати виконання над ними наступних операцій: перевірку на рівність, перевірку на підмножину, перевірку на входження елемента у множину, об’єднання, перетин, різниця (всі можливі випадки).
Відлагодити, скомпілювати і зберегти програму.
Оформити звіт про роботу.
Текст програми
program mas;
uses crt;
const MAX = 9;
type bit = 0..1;
type mnogina = 0..9;
var a:array[1..MAX]of integer;
b:array[1..MAX]of integer;
per:array[1..MAX]of bit;
a1:array[1..MAX]of bit;
b1:array[1..MAX]of bit;
rizab:array[1..MAX]of bit;
rizba:array[1..MAX]of bit;
sum:array[1..MAX]of bit;
i,j,maxa,maxb:integer;
univ:array[1..MAX]of integer;
mnga,mngb,rizmngab,rizmngba,summngab,permngab:set of mnogina;
begin
clrscr;
for i:=1 to MAX do
begin
b[i]:=0;
a[i]:=0;
end;
write('Введіть кількість елементів множини А: ');
readln(maxA);
write('Введіть кількість елементів множини В: ');
readln(maxb);
if (maxa>MAX)or(maxb>max) then writeln('Vuhid za mezi universaljnoi mnozhunu')
else
Begin
for i:=1 to maxa do
begin
write('Введіть',i,' - й елемент масиву А: ');
readln(j);
a[i]:=j;
end;
mnga:=[a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]];
for i:=1 to maxb do
begin
write('Введіть ',i,' - й елемент масиву B: ');
readln(j);
b[i]:=j;
end;
mngb:=[b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9]];
for i:=1 to max do
begin
univ[i]:=i;
end;
for i:=1 to maxa do
for j:=1 to max do
if a[i]=univ[j] then a1[j]:=1;
for i:=1 to maxb do
for j:=1 to max do
if b[i]=univ[j] then b1[j]:=1;
writeln;
for i:=1 to max do
if (a1[i]=0)and(b1[i]=0)then continue
else sum[i]:=1;
summngab:=mnga+mngb;
for i:=1 to max do
if (a1[i]=1)and(b1[i]=1) then per[i]:=1;
permngab:=mnga*mngb;
for i:=1 to max do
if (a1[i]=1)and(b1[i]=0) then rizab[i]:=1;{a\b}
rizmngab:=mnga-mngb;{a\b}
for i:=1 to max do
if (b1[i]=1)and(a1[i]=0) then rizba[i]:=1;{b\a}
rizmngba:=mngb-mnga;{b\a}
write('Вивід А: ');
for i:=1 to max do
write(a1[i],' ');
writeln;
for i:=1 to max do
if i in mnga then write(i,' ');
writeln;writeln;
write('Вивід В: ');
for i:=1 to max do
write(b1[i],' ');
writeln;
for i:=1 to max do
if i in mngb then write(i,' ');
writeln;writeln;
write('Об’єднання множини А і В: ');
for i:=1 to max do
write(sum[i],' ');
writeln;
for i:=1 to max do
if i in summngab then write(i,' ');
writeln;writeln;
write('Переріз множин А і В ');
for i:=1 to max do
write(per[i],' ');
writeln;
for i:=1 to max do
if i in permngab then write(i,' ');
writeln; writeln;
write('Різниця множин А і В: ');
for i:=1 to max do
write(rizab[i],' ');
writeln;
for i:=1 to max do
if i in rizmngab then write(i,' ');
writeln; writeln;
write('Різниця множин В і А: ');
for i:=1 to max do
write(rizba[i],' ');
writeln;
for i:=1 to max do
if i in rizmngba then write(i,' ');
writeln; writeln;
if mnga = mngb then writeln('Множина А рівна множині В');
if mnga <= mngb then writeln('Множина А є підмножиною множини В');
if mnga >= mngb then writeln('Множина В є підмножиною множини А ');
write('Введіть число для пошуку : ');
readln(j);
if a1[j]=1 then writeln('Елемент входить до множини А');
if b1[j]=1 then writeln('Еленент входить до множини В');
if (a1[j]=0)and(b1[j]=0) then writeln('Елемент не входить до множин А і В');
End;
readln;
end.
Висновок:
На цій роботі я вдосконалив свої вміння по виконанню операцій з множинами в середовищі Turbo Pascal.