да матреиал у меня то есть вот например псевдокод по типу задания,
надо сделать именно моделирование системы, я вообще на пыхе собрался
это написать, там с ООП все в порядке должно получиться,
но вот с логикой не могу догнать как это все устроить лучше всего будет...
задание такое:
Написать програму, которая моделирует касу продажи авиабилетов.
Автомат приймає гроші (только одного выбраного номинала) и выдает сдачу соответственными купюрами.
Ввод запроса на продажу организуется с помощью выбора пункта меню:
0 – виключити автомат;
1 – купити білет до Києва вартістю 28.;
2 – купити білет до Москви вартістю 37;
3 – купити білет до Лондона вартістю 50;
4 – купити білет до Берлину вартістю 77;
5 – купити білет до Парижа вартістю 91.
Если сдачу видать можна, програма формирует нужный набор купюр (также корректирует банк купюр) и формирует сигнал на выдачу. Если купюр для здачи не хватает, делается соответствующее сообщение.
Запрос на выдачу денег приходят через случайные отрезки времени посля очередного обслуживания клиента (або отказа).
Автомат имеет 2 терминала («А» и «В»),которые работают независимо.
Модель автомата представить в выгляде 3 взаемодействующих процесов А, В, и С.
Процесы А и В определяют час прихода запроса на продажу, нужную суму здачи и переходят в состояние блокирования.
Процес С ожидает момент появления необходимости выдать сдачу и, если величина сдачи известна, определяет купюры или невозможность выдачи. Потом он активирует процес А или В (от кого пришел запрос), а сам ожидает на очередной запрос.
Для взаемодействия процесов использовать "почтовый ящик".
Приклад . Реалізація взаємних виключень з використанням повідомлень.
Код
const int n = //количество процесов;
void P (int n)
{
message msg;
while (true)
{
receive (mutex, msg);
// Критический раздел;
send (mutex, msg);
// Остальной код;
}
}
void main()
{
create_mailbox (mutex);
send (mutex, null);
parbegin (P(l),P(2),..-,P(n));
}
Вот тому кто не помнит что такое почтовые ящики немного материала:
1.Почтовые ящики
Если процесс Р1 хочет общаться с процессом Р2, Р1 просит систему образовать почтовый ящик, который свяжет эти два процесса так, чтобы они могли передавать друг другу сообщения. Для того, чтобы послать процессу Р2 какое-то сообщение процесс Р1 просто помещает это сообщение в почтовый ящик, откуда процесс Р2 может его в любое время взять. При применении почтового ящика процесс Р2 в конце концов обязательно получит сообщение, когда обратиться за ним, если вообще обратиться.
Почтовый ящик – это информационная структура, для которой задаются правила, описывающие ее работу. Она состоит из головного элемента, в котором находится описание данного почтового ящика, и из нескольких гнезд, в которые помещают сообщения. Размер каждого гнезда и количество гнезд, обычно задаются при образовании почтового ящика. Правила работы могут быть различными, в зависимости от сложности почтового ящика.
В простейшем случае, сообщения передаются только в одном направлении. Процесс Р1 может посылать сообщение до тех пор, пока имеются свободные гнезда. Если все гнезда заполнены, то процесс Р1 может либо ждать, либо заняться другими делами и попытаться послать сообщение позже.
Аналогично Р2 может получать сообщения до тех пор, пока имеются заполненные гнезда.