Программа
Program SetOfPrinter;
{ Работа со множествами }
Type Printer=(EPL_5200,SQ_870,LQ_860,LQ_570,LQ_100,FX_870,LX_1050);
{ Тип принтер перечисляемый }
PrinterSet=set of Printer; { Тип множество принтеров }
Const ArrayOfPrinterSet:array[1..5] of PrinterSet=
{ Массив множеств принтеров в 5-и институтах }
([EPL_5200, LQ_860,LQ_570,LQ_100,FX_870,LX_1050],
[EPL_5200, LQ_860,LQ_570, FX_870 ],
[EPL_5200, LQ_860,LQ_570,LQ_100,FX_870 ],
[EPL_5200, LQ_570, FX_870 ],
[EPL_5200, LQ_860,LQ_570,LQ_100,FX_870 ]);
Var Set1,Set2:PrinterSet; { Первое и второе искомые множества }
i:byte; { Счетчик институтов }
PrinterMeter:Printer; { Счетчик принтеров }
PrinterInAll:boolean; { Флаг наличия принтера во всех институтах }
Procedure WriteSet(SetPrn:PrinterSet);
Begin
for PrinterMeter:=EPL_5200 to LX_1050 do
{ перебор возможных значений принтеров }
if PrinterMeter in SetPrn then case PrinterMeter of
{ если текущий принтер входит в сформированное множество, то вывод модели }
EPL_5200:Write('EPL_5200 ');
SQ_870 :Write('SQ_870 ');
LQ_860 :Write('LQ_860 ');
LQ_570 :Write('LQ_570 ');
LQ_100 :Write('LQ_100 ');
FX_870 :Write('FX_870 ');
LX_1050 :Write('LX_1050 ')
end;
WriteLn; { Вывод конца строки }
End;
BEGIN
Set1:=[]; { Обнуление множества }
for PrinterMeter:=EPL_5200 to LX_1050 do { Цикл проверки наличия принтеров }
Begin
PrinterInAll:=true;
{ Установка флага наличия принтера во всех институтах }
for i:=1 to 5 do
{ Цикл просмотра институтов на наличие текущего принтера }
PrinterInAll:=PrinterInAll and (PrinterMeter in ArrayOfPrinterSet[i]);
{ Вычисление флага наличия принтера }
if PrinterInAll then Set1:=Set1+[PrinterMeter] { Если принтер оказался
во всех институтах, то добавление текущего принтера в искомое множество }
End;
WriteLn; { Вывод конца строки }
WriteLn('Принтеры имеющиеся во всех институтах: ');
{ Вывод сообщения о наличии принтеров }
WriteSet(Set1);{ Вывод множества принтеров }
Set2:=[]; { Обнуление множества }
for PrinterMeter:=EPL_5200 to LX_1050 do
{ Цикл проверки наличия принтеров по всем институтам }
for i:=1 to 5 do { Цикл просмотра институтов }
if PrinterMeter in ArrayOfPrinterSet[i] then Set2:=Set2+[PrinterMeter];
{ Если текущий принтер входит во множество принтеров института,
то добавление его в искомое множество }
WriteLn('Принтеры имеющиеся хотябы в одном институте: ');
{ Вывод сообщения о наличии принтеров }
WriteSet(Set2);{ Вывод множества принтеров }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию