ЗАДАНИЕ 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-х техникумах:

лыжи

коньки

хоккей

футбол

регби