Получить множество всех продуктов, которые есть во всех магазинах - Turbo Pascal
Формулировка задачи:
Описать процедуру Nal(sh, A), которая по информации из массива Sh типа shop (Sh(i) – это множество продуктов, имеющихся в i-м магазине) присваивает параметру A типа assort множество всех продуктов, которые есть во всех магазинах.
Есть следующий код:
Решение задачи: «Получить множество всех продуктов, которые есть во всех магазинах»
textual
Листинг программы
uses crt; type food = ( bread,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe); assort = set of food; shop = array[1..20] of assort; const n=5; //количество магазинов, раз нет в параметрах процедуры //значит константа k=10;//количесиво продуктов pr:array[0..k] of string=('хлеб','масло','молоко','мясо','рыба','соль', 'сыр','соус','сахар','чай','кофе'); //как перевести saucers незнаю, //вероятно ошибка в написании как и в broad procedure nal(sh:shop; var a:assort); var i:food; k,m,j:integer; begin a:=[]; for i:=bread to cafe do begin k:=0; for j:=1 to n do if i in sh[j] then k:=k+1; if k=n then begin a:=a+[i]; k:=1; end; end; if a=[] then writeln('Нет продуктов, которые есть во всех магазинах') else begin writeln('Продукты, которые есть во всех магазинах'); for i:=bread to cafe do if i in a then write(pr[ord(i)],' '); end; end; var m:shop; a:assort; i:food; j,v:byte; begin clrscr; //формируем множества writeln('Перечислите в каком из ',n,' магазинов какие продукты)'); for j:=1 to n do begin writeln('Магазин ',j); m[j]:=[]; writeln('Выберите продукты'); writeln('0-хлеб 1-масло 2-молоко 3-мясо 4-рыба 5-соль'); writeln('6-сыр 7-соус 8-сахар 9-чай 10-кофе 11-выход'); repeat readln(v); if v in [0..k] then m[j]:=m[j]+[food(v)]; until v=11; clrscr; end; //выведнм на экран что получилось writeln('Полный список продуктов:'); for i:=bread to cafe do write(pr[ord(i)],' '); writeln; writeln('Список продуктов по магазинам:'); for j:=1 to n do begin write(j,' - '); for i:=bread to cafe do if i in m[j] then write(pr[ord(i)],' '); writeln; end; nal(m,a); readln; end.
Объяснение кода листинга программы
- Создаётся тип данных
food
, который представляет собой набор продуктов. - Создаётся переменная
shop
, которая представляет собой массив из 20 элементов типаassort
. - Создаётся константа
n
для обозначения количества магазинов. - Создаётся константа
k
для обозначения количества продуктов. - Создаётся переменная
pr
, которая представляет собой массив из 12 элементов типаstring
, каждый элемент представляет собой название продукта. - В процедуре
nal
происходит следующее:- Создается пустой массив
a
для хранения продуктов, которые есть во всех магазинах. - Для каждого продукта
i
отbread
доcafe
происходит следующее:- Инициализируется переменная
k
для подсчета количества продуктов данного типа в текущем магазине. - Если продукт
i
присутствует во всех магазинах (k равноn
), то добавляем его в массивa
и обнуляемk
. - Если продукт
i
отсутствует во всех магазинах, выводим сообщениеНет продуктов, которые есть во всех магазинах
.
- Инициализируется переменная
- Выводим список продуктов, которые есть во всех магазинах.
- Если массив
a
не пустой, выводим список продуктов по магазинам.
- Создается пустой массив
- Создается переменная
m
, которая представляет собой магазин. - В цикле
for
пользователь выбирает продукты для каждого магазина. - Если выбранный продукт присутствует в магазине, добавляем его в соответствующий магазин.
- После выбора всех продуктов для всех магазинов вызывается функция
nal
. - Выводится полная информация о продуктах.
- Выводится информация о продуктах по магазинам.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д