unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
type igr=(kb,kn,kk,ms,lg,pr,vl); //перечислимый тип
mnz=set of igr;//тип множества
const k=7;//список игрушек
sp:array[0..k-1] of string=('кубики','конструктор','кукла','машинка',
'лего','пирамидка','велосипед');
var m:array[1..20] of mnz; //массив множеств
m1:mnz;
i:igr;
n,j,v:integer;
begin
repeat
memo1.Lines[0]:='Количество детсадов до 20 n=';
n:=StrToInt(Edit1.Text);
until n in [1..20];
memo1.Lines[0]:='Перечислите в каком из '+IntToStr(n)+' детсадов какие игрушки';
for j:=1 to n do
begin
memo1.Lines[1]:='Детсад '+IntToStr(j);
m[j]:=[];
memo1.Lines[2]:='Выберите игрушки';
memo1.Lines[3]:='0-кубики 1-конструктор 2-кукла 3-машинка 4-лего 5-пирамидка 6-велосипед 7-выход';
repeat
v:=StrToInt(Edit2.Text);
if v in [0..k-1] then m[j]:=m[j]+[igr(v)];//заполняем множества
until v=7;
end;
memo1.Lines[4]:='Полный список игрушек:';
for i:=kb to vl do
memo1.Lines[5]:=sp[ord(i)]+' ';
memo1.Lines[6]:='Список игрушек в детсадах:';
for j:=1 to n do
begin
memo1.Lines[j+6]:=IntToStr(j)+' - ';
for i:=kb to vl do
if i in m[j] then memo1.Lines[j+6]:=memo1.Lines[j+6]+sp[ord(i)]+' ';
end;
memo1.Lines[n+7]:='Игрушки, которых нет ни в одном детсаду:';
m1:=[kb,kn,kk,ms,lg,pr,vl];//полное множество
for j:=1 to n do
m1:=m1-m[j];//вычитаем все по садам
if m1=[] then memo1.Lines[n+8]:='Таких игрушек нет'//если ничего не осталось
else
for i:=kb to vl do //если осталось
if i in m1 then memo1.Lines[n+8]:=sp[ord(i)];
memo1.Lines[n+9]:='Игрушки, которые есть в каждом детсаду:';
m1:=m[1]; //первый сад
for j:=1 to n do
m1:=m1*m[j];//пересекаем с остальными
if m1=[] then memo1.Lines[n+10]:='Таких игрушек нет'//если пересечение пустое
else
for i:=kb to vl do //если нет
if i in m1 then memo1.Lines[j+15]:=sp[ord(i)];
end;
end.
type igr=(kb,kn,kk,ms,lg,pr,vl); //перечислимый тип
mnz=set of igr;//тип множества
const k=7;//список игрушек
sp:array[0..k-1] of string=('кубики','конструктор','кукла','машинка',
'лего','пирамидка','велосипед');
var m:array[1..20] of mnz; //массив множеств
m1:mnz;
i:igr;
n,j,v:byte;
begin
repeat
write('Количество детсадов до 20 n=');
readln(n);
until n in [1..20];
writeln('Перечислите в каком из ',n,' детсадов какие игрушки)');
for j:=1 to n do
begin
writeln('Детсад ',j);
m[j]:=[];
writeln('Выберите игрушки');
writeln('0-кубики 1-конструктор 2-кукла 3-машинка 4-лего 5-пирамидка 6-велосипед 7-выход');
repeat
readln(v);
if v in [0..k-1] then m[j]:=m[j]+[igr(v)];//заполняем множества
until v=7;
end;
writeln('Полный список игрушек:');
for i:=kb to vl do
write(sp[ord(i)],' ');
writeln;
writeln;
writeln('Список игрушек в детсадах:');
for j:=1 to n do
begin
write(j:2,' - ');
for i:=kb to vl do
if i in m[j] then write(sp[ord(i)],' ');
writeln;
end;
writeln('Игрушки, которых нет ни в одном детсаду:');
m1:=[kb,kn,kk,ms,lg,pr,vl];//полное множество
for j:=1 to n do
m1:=m1-m[j];//вычитаем все по садам
if m1=[] then writeln('Таких игрушек нет')//если ничего не осталось
else
for i:=kb to vl do //если осталось
if i in m1 then writeln(sp[ord(i)]);
writeln;
writeln('Игрушки, которые есть в каждом детсаду:');
m1:=m[1]; //первый сад
for j:=1 to n do
m1:=m1*m[j];//пересекаем с остальными
if m1=[] then writeln('Таких игрушек нет')//если пересечение пустое
else
for i:=kb to vl do //если нет
if i in m1 then writeln(sp[ord(i)]);
readln
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.