ЗАДАНИЕ 6. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ
В техникуме имеются секции по следующим видам спорта: лыжи, коньки, хоккей, футбол, регби и самбо. Известны виды спорта, которыми занимаются учащиеся каждой группы. Количество групп N указано в варианте.
1. Требуется построить и распечатать множество видов спорта:
а) которыми занимаются во всех группах (N=10);
б) которыми занимаются хотя бы в одной группе (N=l0);
в) которыми не занимаются ни в одной из групп (N=10).
г) которыми занимаются хотя бы в 5-и группах (N=10).
program dz6;
const n=10;
type sports=(skiing, skating, hockey, football, rugby, sambo);
group=set of sports;
groups=array[1..n] of group;
var m1:groups;
x:sports;
A,B,C,D,xm1:group;
i,j,iw,l:integer;
counter: array[sports] of integer;
s:string;
ch:char;
begin
writeln('Номера спортивных секций: 1-лыжи, 2-коньки, 3-хоккей, 4-футбол, 5-регби, 6-самбо');
for j:=1 to n do begin
writeln('введите номера секций ', j,'-ой группы');
readln(s);
l:=length(s);
for i:=1 to l do begin
ch:=s[i];
case ch of
'1': x:=skiing;
'2': x:=skating;
'3': x:=hockey;
'4': x:=football;
'5': x:=rugby;
'6': x:=sambo;
end;
m1[j]:=m1[j]+[x];
end;
end;
A:=m1[1]; B:=[]; C:=[skiing .. sambo];
for i:=1 to n do begin
A:=A*m1[i]; (*по крайней мере в одном*)
B:=B+m1[i]; (*во всех*)
C:=C-B; (*нет ни в одном*)
end;
for i:=1 to 3 do begin
case i of
1: writeln('секции которыми занимаются во всех группах');
2: writeln('секции которыми занимаются хотя бы в одной группе ');
3: writeln('которыми не занимаются ни в одной из групп ');
end;
for x:=skiing to sambo do
if x in A then
case x of
skiing: writeln('лыжи');
skating: writeln('коньки');
hockey: writeln('хоккей');
football: writeln('футбол');
rugby: writeln('регби');
sambo: writeln('самбо');
end;
if i=1 then A:=B else A:=C;
end;
writeln('секции которые есть хотя бы в 3-х техникумах:');
for x:=skiing to sambo do begin
for i:=1 to n do begin
if(x in m1[i]) then inc(counter[x]);
end;
end;
for x:=skiing to sambo do begin
if(counter[x]>2) then case x of
skiing: writeln('лыжи');
skating: writeln('коньки');
hockey: writeln('хоккей');
football: writeln('футбол');
rugby: writeln('регби');
sambo: writeln('самбо');
end;
end;
end.
Результаты выполнения программы:
Номера спортивных секций: 1-лыжи, 2-коньки, 3-хоккей, 4-футбол, 5-регби, 6-самбо
введите номера секций 1-ой группы
введите номера секций 2-ой группы
введите номера секций 3-ой группы
введите номера секций 4-ой группы
введите номера секций 5-ой группы
введите номера секций 6-ой группы
введите номера секций 7-ой группы
введите номера секций 8-ой группы
введите номера секций 9-ой группы
введите номера секций 10-ой группы
секции которыми занимаются во всех группах
коньки
секции которыми занимаются хотя бы в одной группе
лыжи
коньки
хоккей
футбол
регби
которыми не занимаются ни в одной из групп
самбо
секции которые есть хотя бы в 3-х техникумах:
лыжи
коньки
хоккей
футбол
регби