Конечные автоматы для автомата по обмену монет

Я пытаюсь создать таблицу для описания поведения FSA для автомата по обмену монет, описанного ниже.

Есть слот, который принимает монету 50c и 2 кнопки, которые пользователь может нажать, чтобы получить монету 20c или 10c в качестве сдачи. Как только монета 50с будет вставлена, машина блокируется, чтобы предотвратить добавление другой монеты. Когда пользователь нажимает кнопку 20с, машина проверяет, что оставшееся значение является достаточным, затем выдает пользователю монету 20с. Если оставшегося значения недостаточно, машина "умирает" (для простоты). Кнопка 10с работает аналогично.

События машины: insert50c, give20c, give10c.

Итак, из моего понимания, что FSA имеет 6 состояний, скажем, 0,10,20,30,40,50. Состояния представлены стоимостью денег, оставшихся для возврата. Я нарисовал приблизительную диаграмму состояний, но мне не хватает каких-либо переходов?

1 ответ

Ваша диаграмма состояний выглядит хорошо. В задании сказано "пользователь может нажать, чтобы получить монету в 20 или 10 центов". Я пропускаю это взаимодействие с пользователем полностью. Что делать, если есть сумма 10с, а пользователь нажимает 20с?

Так что, если машине разрешено принимать только 50c за изменение, а не 20c, это нормально. При каждой смене монет у автомата по обмену денег есть кнопка "Отмена". Что с этим?

Другие вопросы по тегам