Модель данных Склад хранит детали для сборки различных устройств (скажем, компьютеров) Есть наименования деталей, и сборочные карты, которые описывают какие детали и в каком количестве нужны для сборки определенного устройства Собранное устройство опять хранится на том же складе. Собранное устройство может являться составной частью для сборки другого более сложного устройства.
Требуется определять по запросу возможна ли сборка заданного количества заданных устройств, если нет, то каких деталей и в каком количестве не хватает. Другой запрос --- сколько указанных устройств можно собрать из имеющихся деталей и какие детали после сборки окажутся в дефиците
Также нужно выполнять операции "сборки", добавления и удаления деталей Кроме этого нужно добавлять новые детали и устройства с их картами сборки и распечатывать карты сборки в удобном для восприятия виде
Задание W2
Имена всех деталей и устройств хранятся в одном динамическом массиве Вместе с именами хранится количество деталей и список индексов для составных частей устройства.
Кроме этого для быстрого поиска есть хеш-множество, сопоставляющее имени устройства или детали его индекс в этом массиве
make
./server
python3 client.py
- canmake
- addDetail
- show
- deleteDetail
- addRecipe
- make
- getquant
- makefrom
Запускается командой:
canmake <detailname>, <quant> end
Выводит на экран ответ на вопрос можем ли собрать это устройство. Если же его собрать нельзя, выводит причину.
Запускается командой:
adddetail <detailname>, <quant> end
Добавляет устройство на склад.
Запускается командой:
show end
Выводит на экран всю информацию о складе. Сперва доступные детали и их количество, далее все известные рецепты.
Запускается командой:
deletedetail <detailname>, <quant> end
Удалит деталь со склада в нужном количестве, если это возможно..
Запускается командой:
AddRecipe <DETAILNAME>, <FIRTST_ITEM>, <QUANT>, <SECOND_ITEM>, <QUANT>, ... <ITEM>, <QUANT>, end
Добавляет рецепт детали на склад.
Запускается командой:
make <detailname>, <quant> end
Собирает нужное количество деталей.
Запускается командой:
getquant <detailname> end
Выводит количетсво этой детали на складе.
Запускается командой:
makefrom <detailname>, ... , <detailname>, end
Выводит на экран, что мы можем собрать из данных деталей, также будет выведенна информация о дефиците. Если какой-то детали не будет на складе, напечатает об этом.
Все команды переводятся в нижний регист. Чтобы завершить работу клиента, необходимо выполнить команду в клиенте:
stop
Чтобы через клиент закрыть сервер, необходимо выполнить команду в клиенте:
exit end