Используя объявлены типа: type t1 = (золото, медь, серебро, нефть, железо, ртуть, свинец, марганец, уголь, газ) построить пять множеств, состоящих из различных комбинаций этого списка. Вывести на экран названия объектов, которые есть во всех множествах одновременно. Определить, каких объектов нет ни в одной множестве. Выполнить дополнительно задачи своего варианта, а именно определить, какие объекты: входящие во вторую и третью множества. Паскаль, заранее спасибо

1

Ответы и объяснения

2013-05-18T09:47:18+04:00

вроде так

 

type t1 = set of (zoloto, med, serebro, neft, jelezo, rtut, svines, marganes, ugol, gaz);
var m1,m2,m3,m4,m5:t1;
m:array[1..10]of t1;
s:array[1..10]of string;
i:integer;
begin
clrscr;
m1:=[zoloto,serebro];
m2:=[zoloto,neft,jelezo,rtut];
m3:=[zoloto,svines,marganes,ugol];
m4:=[gaz,zoloto,ugol];
m5:=[zoloto,neft,rtut,marganes,gaz];
m[1]:=[zoloto];m[2]:=[med];m[3]:=[serebro];m[4]:=[neft];m[5]:=[jelezo];
m[6]:=[rtut];m[7]:=[svines];m[8]:=[marganes];m[9]:=[ugol];m[10]:=[gaz];
s[1]:='zoloto';s[2]:='med';s[3]:='serebro';s[4]:='neft';s[5]:='jelezo';
s[6]:='rtut';s[7]:='svines';s[8]:='marganes';s[9]:='ugol';s[10]:='gaz';

for i:=1 to 10 do
begin
if (m[i]*m1=m[i])and(m[i]*m2=m[i])and(m[i]*m3=m[i])
and(m[i]*m4=m[i])and(m[i]*m5=m[i]) then
writeln('Est vo vsex mnojestvax odnovremenno = ',s[i]);
if (m[i]*m1<>m[i])and(m[i]*m2<>m[i])and(m[i]*m3<>m[i])
and(m[i]*m4<>m[i])and(m[i]*m5<>m[i]) then
writeln('Net ni v odnoi mnojestve = ',s[i]);
if (m[i]*m2=m[i])and(m[i]*m3=m[i]) then
writeln('Vxodyajie v 2 i 3 mnojestva = ',s[i]);
end;
end.