Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.
Определение итоговой цены заказа с учётом разных скидок
Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В розничном магазине реализуется продажа разнообразных товаров, при этом могут применяться несколько видов скидок. Для некоторых покупателей предлагаются:
- фиксированная скидка 5 % на весь ассортимент независимо от суммы заказа;
- оптовая скидка 10 % при покупке количества единиц товара, превышающего заданный порог;
- скидка 15 % при покупке отдельного продукта, если его суммарная стоимость превышает установленный лимит (например, $100) и клиент берёт минимум 3 единицы;
- скидка, рассчитываемая от общей стоимости заказа, независимо от того, какие товары в него входят. Необходимо реализовать программу, которая рассчитывает конечную стоимость покупки с учётом всех применимых скидок.
class Discount {
public:
int price;
};
class regular_discount : Discount {
};
class opt_discount : Discount {
};
class End_price {
};
Ответ
Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.
Отделите позиции заказа, проверку условий и расчёт скидки. Деньги храните целыми минимальными единицами, пороги и проценты передавайте как настройки. Зафиксируйте, проверяются ли пороги до скидок и на каком этапе округляется результат.
Например, при согласованной политике «лучшая скидка на позицию, затем скидка на заказ» алгоритм таков: выбрать применимую ставку каждой позиции → рассчитать суммы → сложить → применить правило заказа. Это один возможный контракт, а не следствие исходного условия. Правила 5% и 10% при последовательном применении не равны общей скидке 15%.