Определение итоговой цены заказа с учётом разных скидок

Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.

Короткий ответ

Что ответить на собеседовании

Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.

Подробный разбор

Ответ с пояснениями

Условие

В розничном магазине реализуется продажа разнообразных товаров, при этом могут применяться несколько видов скидок. Для некоторых покупателей предлагаются:

  • фиксированная скидка 5 % на весь ассортимент независимо от суммы заказа;
  • оптовая скидка 10 % при покупке количества единиц товара, превышающего заданный порог;
  • скидка 15 % при покупке отдельного продукта, если его суммарная стоимость превышает установленный лимит (например, $100) и клиент берёт минимум 3 единицы;
  • скидка, рассчитываемая от общей стоимости заказа, независимо от того, какие товары в него входят. Необходимо реализовать программу, которая рассчитывает конечную стоимость покупки с учётом всех применимых скидок.
class Discount {
public:
    int price;
};

class regular_discount : Discount {

};

class opt_discount : Discount {

};

class End_price {

};

Ответ

Сначала нужно определить правила совместимости скидок: складываются ли они, применяются последовательно или выбирается лучшая. Без этого и параметров скидки на заказ единственной итоговой цены нет.

Отделите позиции заказа, проверку условий и расчёт скидки. Деньги храните целыми минимальными единицами, пороги и проценты передавайте как настройки. Зафиксируйте, проверяются ли пороги до скидок и на каком этапе округляется результат.

Например, при согласованной политике «лучшая скидка на позицию, затем скидка на заказ» алгоритм таков: выбрать применимую ставку каждой позиции → рассчитать суммы → сложить → применить правило заказа. Это один возможный контракт, а не следствие исходного условия. Правила 5% и 10% при последовательном применении не равны общей скидке 15%.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее