Получить множество всех продуктов, которые есть во всех магазинах - Turbo Pascal
Формулировка задачи:
Листинг программы
- type food = (broad, butter, milk, meat, fish, salt, cheese, saucers, sugar, tea, cafe);
- assort = set of food;
- shop = array [1..20] of 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.
Решение задачи: «Получить множество всех продуктов, которые есть во всех магазинах»
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
. - Выводится полная информация о продуктах.
- Выводится информация о продуктах по магазинам.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д