Получить множество всех продуктов, которые есть во всех магазинах - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. type food = (broad, butter, milk, meat, fish, salt, cheese, saucers, sugar, tea, cafe);
  2. assort = set of food;
  3. shop = array [1..20] of assort;
Описать процедуру Nal(sh, A), которая по информации из массива Sh типа shop (Sh(i) – это множество продуктов, имеющихся в i-м магазине) присваивает параметру A типа assort множество всех продуктов, которые есть во всех магазинах. Есть следующий код:
Листинг программы
  1. uses crt;
  2. type food = ( broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
  3. assort = set of food;
  4. shop = array[1..20] of assort;
  5. procedure nal(sh:shop; a:assort);
  6. var i,m,p,j:integer;
  7. begin
  8. writeln('vvedite kol-va magazinov');
  9. readln(m);
  10. for j:=1 to m do begin
  11. writeln('vvedite kol-vo productov');
  12. readln(p);
  13. writeln('vvedite productu,imeushiesya v magazine: broad,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe');
  14. for i:=1 to p do readln(sh[i]);
  15. for i:=1 to p do
  16. if sh[i] in shop then
  17.  
  18. readln;
  19. End.

Решение задачи: «Получить множество всех продуктов, которые есть во всех магазинах»

textual
Листинг программы
  1. uses crt;
  2. type food = ( bread,butter,milk,meat,fish,salt,cheese,saucers,sugar,tea,cafe);
  3.      assort = set of food;
  4.      shop = array[1..20] of assort;
  5. const n=5; //количество магазинов, раз нет в параметрах процедуры
  6.            //значит константа
  7.       k=10;//количесиво продуктов
  8.       pr:array[0..k] of string=('хлеб','масло','молоко','мясо','рыба','соль',
  9.                                  'сыр','соус','сахар','чай','кофе');
  10.                                  //как перевести saucers незнаю,
  11.                                  //вероятно ошибка в написании  как и в broad
  12.  
  13. procedure nal(sh:shop; var a:assort);
  14. var  i:food;
  15.      k,m,j:integer;
  16. begin
  17. a:=[];
  18. for i:=bread to cafe do
  19.  begin
  20.   k:=0;
  21.   for j:=1 to n do
  22.   if i in sh[j] then k:=k+1;
  23.   if k=n then
  24.    begin
  25.     a:=a+[i];
  26.     k:=1;
  27.    end;
  28.  end;
  29. if a=[] then writeln('Нет продуктов, которые есть во всех магазинах')
  30. else
  31.  begin
  32.   writeln('Продукты, которые есть во всех магазинах');
  33.   for i:=bread to cafe do
  34.   if i in a then write(pr[ord(i)],' ');
  35.  end;
  36. end;
  37. var m:shop;
  38.     a:assort;
  39.     i:food;
  40.     j,v:byte;
  41. begin
  42. clrscr;
  43. //формируем множества
  44. writeln('Перечислите в каком из ',n,' магазинов какие продукты)');
  45. for j:=1 to n do
  46.  begin
  47.   writeln('Магазин ',j);
  48.   m[j]:=[];
  49.   writeln('Выберите продукты');
  50.   writeln('0-хлеб 1-масло 2-молоко 3-мясо 4-рыба 5-соль');
  51.   writeln('6-сыр 7-соус 8-сахар 9-чай 10-кофе 11-выход');
  52.   repeat
  53.    readln(v);
  54.    if v in [0..k] then m[j]:=m[j]+[food(v)];
  55.   until v=11;
  56.   clrscr;
  57.  end;
  58. //выведнм на экран что получилось
  59. writeln('Полный список продуктов:');
  60. for i:=bread to cafe do
  61. write(pr[ord(i)],' ');
  62. writeln;
  63. writeln('Список продуктов по магазинам:');
  64. for j:=1 to n do
  65.  begin
  66.   write(j,' - ');
  67.   for i:=bread to cafe do
  68.   if i in m[j] then write(pr[ord(i)],' ');
  69.   writeln;
  70.  end;
  71. nal(m,a);
  72. readln;
  73. end.

Объяснение кода листинга программы

  1. Создаётся тип данных food, который представляет собой набор продуктов.
  2. Создаётся переменная shop, которая представляет собой массив из 20 элементов типа assort.
  3. Создаётся константа n для обозначения количества магазинов.
  4. Создаётся константа k для обозначения количества продуктов.
  5. Создаётся переменная pr, которая представляет собой массив из 12 элементов типа string, каждый элемент представляет собой название продукта.
  6. В процедуре nal происходит следующее:
    • Создается пустой массив a для хранения продуктов, которые есть во всех магазинах.
    • Для каждого продукта i от bread до cafe происходит следующее:
      • Инициализируется переменная k для подсчета количества продуктов данного типа в текущем магазине.
      • Если продукт i присутствует во всех магазинах (k равно n), то добавляем его в массив a и обнуляем k.
      • Если продукт i отсутствует во всех магазинах, выводим сообщение Нет продуктов, которые есть во всех магазинах.
    • Выводим список продуктов, которые есть во всех магазинах.
    • Если массив a не пустой, выводим список продуктов по магазинам.
  7. Создается переменная m, которая представляет собой магазин.
  8. В цикле for пользователь выбирает продукты для каждого магазина.
  9. Если выбранный продукт присутствует в магазине, добавляем его в соответствующий магазин.
  10. После выбора всех продуктов для всех магазинов вызывается функция nal.
  11. Выводится полная информация о продуктах.
  12. Выводится информация о продуктах по магазинам.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы