Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 18:24   #1
deus95
 
Регистрация: 17.12.2013
Сообщений: 4
Восклицание Программа на тему - Множества

Нужна помощь с данной программой.На предприятии имеется 8 цехов (переменная Ceh), которые выпускают определенный ассортимент (переменная Asortyment) стандартных крепежных деталей. Сегодня каждый цех выпускает определенный набор таких деталей (оператор Ceh [i]: = ...). Далее приведен начало программы анализа ассортимента стандартных деталей, выпускаемых на заводе:
Код:
Program Pidpryemstvo_1;
type
  Product = (gvynt,bolt,gayka,zaklepka,koltso,
             shplint,shurup,shayba,shpilka,shponka,shtift);
  Asortyment = set of product;
var
 Ceh :array[1..8] of Asortyment;
Begin
 Ceh[1]:=[gvynt,bolt,gayka];
 Ceh[2]:=[gvynt,gayka,zaklepka,shponka];
 Ceh[3]:=[shurup];
 . . . . .
End.
Определить номенклатуру стандартных крепежных деталей, которую сегодня выпускали все цеха предприятия.



________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.12.2013 в 19:42.
deus95 вне форума Ответить с цитированием
Старый 23.12.2013, 19:57   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, начнём с начала.
если нужно
Цитата:
Определить номенклатуру стандартных крепежных деталей, которую сегодня выпускали ВСЕ цеха предприятия.
то ответ на это даёт пересечение множеств.
Ответ := Ceh[1]*Ceh[2]*Ceh[3]*....*Ceh[8];
или, в цикле (см. код ниже)



Но это не самое сложное. Самое сложное в паскале с множествами - это ВЫВЕСТИ содержимое множества. Создатели языка (Н.Вирт) вольно или невольно, но не внесли стандартную возможность вывести содержимое множества. Поэтому, единственный способ вывести - это перебирать ВСЕ ВОЗМОЖНЫЕ варианты и проверять их вхождение в множество. (например, см. код ниже)

ну и последнее. Если нужно вывести номеклатуру, которую выводят ВСЕ цеха, то для вашего примера это уже - ПУСТОЕ множество - ибо нет ни одной детали, которую производят в 3-х цехах (уже не говоря про остальные пять цехов).

ну вот, пример кода:
Код:
Program Pidpryemstvo_1;
type
  Product = (gvynt,bolt,gayka,zaklepka,koltso,
             shplint,shurup,shayba,shpilka,shponka,shtift);
  Asortyment = set of product;
var
 Ceh :array[1..8] of Asortyment;
 CommonAssortemnt : Asortyment;
 p : Product;
 i : integer;
Begin
 Ceh[1]:=[gvynt,bolt,gayka];
 Ceh[2]:=[gvynt,gayka,zaklepka,shponka];
 Ceh[3]:=[shurup,gayka];
 Ceh[4]:=[shurup,gayka];
 Ceh[5]:=[shurup,gayka];
 Ceh[6]:=[shurup,gayka];
 Ceh[7]:=[shurup,gayka];
 Ceh[8]:=[shurup,gayka];

 CommonAssortemnt := Ceh[1];
 for i:=2 to 8 do CommonAssortemnt := CommonAssortemnt * Ceh[i];
 
 {вывести множество общих деталей}
 Write('Номенклатура стандартных крепежных деталей, которую сегодня выпускали все цеха (номера изделий):');
 for p:=gvynt to shtift do
   if p in CommonAssortemnt then Write('#',ord(p)+1,' ');
 WriteLn;
   
End.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.12.2013, 20:38   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
deus95
Еще раз кросспост от тебя увижу - забаню.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на тему - Записи Pascal deus95 Паскаль, Turbo Pascal, PascalABC.NET 1 17.12.2013 18:25
Программа на тему - Множества deus95 Паскаль, Turbo Pascal, PascalABC.NET 0 17.12.2013 17:53
программа на тему записи. hunter129 Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2013 18:50
Программа на тему очередь. venera-8 Паскаль, Turbo Pascal, PascalABC.NET 0 08.06.2011 19:29