{Составить программу, используя величины множественного типа.}
(* Есть список имен кукол: "Барби", "Люси", "Катерина",
"Светлана", "Марина", "Анжела".
Имеется информация о том, куклы с какими именами есть
у N девочек. Составить программу, которая выводит список кукол:
а) имеющихся у каждой из девочек;
б) имеющихся хотя бы у одной из девочек;
в) которых нет ни у одной из девочек.
*)
Program Kukla;
Type Kuk = (Barbi, Lusi, Katerina, Svetlana, Marina, Angela);
Kukl = Set Of Kuk;
Const Ku : Array[1..6] Of String[8] =
('Барби', 'Люси', 'Катерина', 'Светлана', 'Марина', 'Анжела');
Ku1 : Array[1..6] Of Kuk =
(Barbi, Lusi, Katerina, Svetlana, Marina, Angela);
KK : Set Of Kuk = [Barbi, Lusi, Katerina, Svetlana, Marina, Angela];
Var A : Array [1..30] Of Kukl;
I, J, K, N, N1 : Integer;
S : String[8];
Per, Ob : Kukl;
Begin
{Ввод данных}
Write('Введите количество детей: ');
ReadLn(N);
For I := 1 To N Do
Begin
Write('Введите количество кукол у ', I, '-й девочки: ');
ReadLn(N1);
A[I] := [];
For J := 1 To N1 Do
Begin
Write(J, '-я кукла: ');
ReadLn(S);
For K := 1 To 6 Do
If S = Ku[K] Then Include(A[I], Ku1[K])
End
End;
Per := KK;
Ob := [];
For I := 1 To N Do
Begin
Per := Per * A[I];
Ob := Ob + A[I]
End;
{Куклы, которые есть у каждой девочки}
WriteLn('Куклы, которые есть у каждой девочки:');
For I := 1 To 6 Do
If Ku1[I] In Per Then WriteLn(Ku[I]);
{Куклы, которые есть хотя бы у одной девочки}
WriteLn('Куклы, которые есть хотя бы у одной девочки:');
For I := 1 To 6 Do
If Ku1[I] In Ob Then WriteLn(Ku[I]);
{Куклы, которых нет ни у одной девочки}
WriteLn('Куклы, которых нет ни у одной девочки:');
For I := 1 To 6 Do
If Ku1[I] In KK - Ob Then WriteLn(Ku[I])
End.