Структуры и указатели: объявление, инициализация и передача по адресу
Содержание курса
Списание со склада
На складе каждая позиция описывается названием и текущим количеством единиц товара. Когда кладовщик хочет проверить, как изменится остаток после частичного списания, ему нужны два принципиально разных режима работы: один — для предварительного расчёта без каких-либо последствий, другой — для фактического изменения записи, которое уже нельзя будет проигнорировать.
Первый режим работает с копией позиции: он возвращает гипотетический остаток, а оригинальная запись при этом остаётся нетронутой. Именно это позволяет кладовщику «примерить» списание и убедиться в его разумности ещё до того, как оно будет зафиксировано. Второй режим действует напрямую на оригинальную позицию через указатель и прежде всего убеждается, что запрашиваемое количество не является отрицательным числом и не превышает фактически доступный остаток, — только при соблюдении обоих условий запись будет изменена.
Что нужно сделать
Допишите draftAfterWithdrawal и withdraw. Обе функции получают складскую позицию и количество списания. Первая должна вернуть расчёт для копии позиции, не меняя переменную в main. Вторая работает с оригиналом и сообщает, было ли списание принято. Количество нельзя списывать, если оно отрицательно или превышает остаток; в таком случае позиция остаётся без изменений.
Формат ввода
В одной строке: название позиции без пробелов, исходный остаток и количество для списания.
Формат вывода
Три строки: draft=NAME:Q, final=NAME:Q и accepted=true либо accepted=false.
Пример
Ввод:
bolts 10 3
Вывод:
draft=bolts:7
final=bolts:7
accepted=true
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
bolts 10 3
Ожидаемый выводdraft=bolts:7 final=bolts:7 accepted=true
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы.
Отправьте решение, чтобы увидеть результаты тестов.
