Загрузка данных


Краткий вывод

В ходе выполнения работы была успешно разработана программа, моделирующая прохождение заказа через различные этапы доставки. На практике были освоены принципы работы с односвязными списками как с динамической структурой данных. Также был реализован механизм обработки ошибок с использованием пользовательского исключения, что позволило эффективно отслеживать и прерывать выполнение программы при превышении лимитов времени на каждом из этапов. 

PDFЕщё 4

Ответы на контрольные вопросы 

PDF

1. Почему для моделирования маршрута доставки можно использовать связный список? Маршрут доставки представляет собой строгую последовательность этапов, где каждый текущий шаг логически переходит в следующий. Односвязный список идеально описывает эту модель: каждый узел (этап) содержит свои данные (название и время) и хранит ссылку на следующий узел (next). Это также позволяет гибко изменять маршрут в будущем (добавлять или удалять этапы), не перестраивая всю структуру данных. 

PDF

2. Что произойдёт, если удалить этап Сортировочный центр из списка? Если удалить этот этап, нарушится текущая связь в цепочке. Чтобы программа работала корректно, потребуется переназначить ссылку next у предыдущего этапа. То есть этап «Упаковка» должен будет указывать напрямую на этап «Курьер». Общее время и количество узлов в маршруте сократятся, а проверка времени просто пропустит удаленный шаг. 

PDF

3. Как изменить программу, чтобы при задержке выводился весь путь заказа до проблемного этапа? Для этого нужно модифицировать функцию check_delivery. 

PDFЕщё 1

Перед циклом while можно создать пустой список (например, passed_route = []), в который будут добавляться имена успешно пройденных этапов. 

PDF

Если проверка current_time <= current.required_time проходит успешно, мы добавляем current.name в этот список.

Когда срабатывает условие задержки current_time > current.required_time , мы передаем в наше исключение DeliveryDelayError не только имя текущего проблемного этапа, но и список passed_route. 

PDFЕщё 1

В функции main() при перехвате ошибки мы выводим на экран весь сохраненный маршрут. 

PDF