type food = ( broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
assort = set of food;
shop = array[1..20] of assort;
Описать процедуру Nal(sh, A), которая по информации из массива Sh типа shop (Sh(i) – это множество продуктов, имеющихся в i-м магазине) присваивает параметру А типа assort множество всех продуктов, которые есть во всех магазинах.
начала делать так:
uses crt;
type food = ( broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
assort = set of food;
shop = array[1..20] of assort;
procedure nal(sh:shop; a:assort);
var i,m,p,j:integer;
begin
writeln('vvedite kol-va magazinov');
readln(m);
for j:=1 to m do begin
writeln('vvedite kol-vo productov');
readln(p);
writeln('vvedite productu,imeushiesya v magazine: broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe');
for i:=1 to p do readln(sh[i]);
for i:=1 to p do
if sh[i] in shop then
readln;
End.
Вот пример решения подобной задачи:
http://volvo71.narod.ru/faq_folder/set_type.htm#set_tasks
сделала как в примере, но почему-то не пашет....
uses crt;
const n=3;
type food = ( broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
assort = set of food;
shop = array[1..3] of assort;
const
s:array[food] of string =('broad','butter','milk','meat','fish','salt','cheese','saucers','sugar','tea','cafe');
stores: shop = (
[broad,butter,milk,meat,fish], {1 magazin}
[broad,butter,fish,salt,cheese,saucers,sugar,tea], {2 magazin}
[fish,salt,cheese,saucers,sugar,cafe] {3 magazin}
);
procedure nal(sh:shop; a:assort);
var i:integer; j:food;
begin
a:=sh[1]; {vubiraem assortiment 1-go magazina}
for i:=1 to n do
a:=a*sh[i]; {peresechenie mnojestv dlya poiska "est vezde"}
end;
procedure write_set(x:assort); {procedura raspechatuvaniya znachenij mnojestva}
var j:food;
begin
{perebiraem vse vozmojnue znacheniya i vuvodim tolko nazvaniya tex iz nix, kotorue est v peredannom v proceduru mnojestve}
for j:=low(food) to high(food) do
if j in x then write(s[j],' ');
end;
var a:assort; j:food;
Begin
clrscr;
nal(stores,a);
write('productu vo vsex magazinax: ');
write_set(a);
readln;
End.
uses crt;
const n=3;
type food = ( broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
assort = set of food;
shop = array[1..3] of assort;
const
s:array[food] of string =('broad','butter','milk','meat','fish','salt','cheese','saucers','sugar','tea','cafe');
stores: shop = (
[broad,butter,milk,meat,fish], {1 magazin}
[broad,butter,fish,salt,cheese,saucers,sugar,tea], {2 magazin}
[fish,salt,cheese,saucers,sugar,cafe] {3 magazin}
);
procedure nal(sh:shop; var a:assort); // <--------VAR
var i:integer; j:food;
begin
a := []; // <------------
for i:=1 to n do a := a + sh[i]; // <----------------
end;
procedure write_set(x:assort); {procedura raspechatuvaniya znachenij mnojestva}
var j:food;
begin
{perebiraem vse vozmojnue znacheniya i vuvodim tolko nazvaniya tex iz nix, kotorue est v peredannom v proceduru mnojestve}
for j:=low(food) to high(food) do
if j in x then write(s[j],' ');
end;
var a:assort; j:food;
Begin
clrscr;
nal(stores,a);
write('productu vo vsex magazinax: ');
write_set(a);
readln;
End.
Толи я задание не верно понял, толи тебя ... Вот програмама:
uses crt;
const
max_shops = 4;
type
TFoodKinds = (beer, milk, water, tea, coffe);
TFoodSet = set of TFoodKinds;
TShops = array [1..max_shops] of TFoodSet;
const
food_label: array [TFoodKinds] of string = (
'beer', 'milk', 'water', 'tea', 'coffe'
);
procedure print_set(const _set: TFoodSet);
var
i: TFoodKinds;
begin
for i := Low(TFoodKinds) to High(TFoodKinds) do
if i in _set then writeln(food_label[i]);
end;
procedure get_rslt_set(const shops: TShops; var _set: TFoodSet);
var
i: integer;
begin
_set := [];
for i := 1 to max_shops do
_set := _set + shops[i];
end;
var
shops: TShops = (
[tea, beer],
[milk],
[],
[beer]
);
in_all: TFoodSet;
begin
clrscr;
get_rslt_set(shops, in_all);
print_set(in_all);
readln;
end.
о, спасибо! теперь идет!
Опять многозначность русского языка ))
"В первой коробке 2 кубика, во второй 3, в третьей 10, а в четвертой 6. Сколько кубиков во всех коробках?" - ищем именно сумму. А если "Какие кубики есть во всех коробках" - уже пересечение множеств.
Бред.
Понятно, я фразу эту неправильно понял, в моем случае находится общий ассортимент.