Язык программирования Pascal. Множества. Типизированные константы. Васильев В.В - 9 стр.

UptoLike

9
for i:=1 to 13 do i:=Номер мыши, стоящей в кругу за i;
Когда все мыши стоят в кругу от 1 до max (max=13), то переход от одной
мыши к другой выражается оператором i:=i mod max + 1. Если при переходе мы
попадаем в мышь, которой уже нет в круге, то номер этой мыши пропускается.
Program Cat;
Const Max=13; {число мышей}
Var krug:set of 1..max; {множество мышей}
i,j:byte; {параметры циклов}
k:1..max; {искомый номер}
Begin
for k:=1 to max do
begin
krug:=[1..max]; i:=k;
repeat
for j:=1 to max do
repeat
i:=i mod max + 1
until i in krug;
if i<>1 then krug:=krug-[i]
until (i=1) or (krug=[1]);
if krug=[1] then break
end;
write('Номер мыши, с которой надо начать счет: ',k);
readln
End.{Cat}
Решим задачу, в которой используется массив из множеств.
Задача 5. Пусть дан фрагмент программы . Найдите значения A, B, C типа
ассортимент, перечисленные ниже.
type
продукт = (хлеб , масло, молоко, мясо, рыба, соль, колбаса, сахар, кофе);
ассортимент = set of продукт;
магазины = array[1..20] of ассортимент;
а) А продукты , которые есть во всех магазинах ;
б) В продукты , которые есть хотя бы в одном магазине;
в) С продукты , которых нет ни в одном магазине.
Множество А получается как пересечение множеств ассортиментов про-
дуктов всех магазинов. Множество B есть объединение множеств ассортимен-
тов продуктов всех магазинов. Множество С получается как разность множест-
ва, состоящего из всех возможных продуктов, и множества В .
Program Shops_;
Uses crt;
Const Max=20; {количество магазинов}
Type
products=(bread,butter,milk,meat,fish,salt,cheese,sausage,sugar,coffee);
assortiment=set of products;