Расчёт заказа с бонусными баллами и базы начисления

Стоимость заказа — 17 400 ₽, после списания 3 333 баллов при курсе 1 балл = 1 ₽ к оплате 14 067 ₽. Размер новых бонусов зависит от согласованной базы начисления.

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

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

Стоимость заказа — 17 400 ₽, после списания 3 333 баллов при курсе 1 балл = 1 ₽ к оплате 14 067 ₽. Размер новых бонусов зависит от согласованной базы начисления.

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

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

Условие

Задача 2
Мебельный магазин продает товар:
Диван - 7000 руб. Стол - 2500 руб. Стул - 300 руб.
За каждую покупку покупателю возвращаются бонусы в размере 5% от стоимости заказа
Покупатель хочет приобрести:
3 стула, 1 стол, 2 дивана
Часть средств покупатель оплачивает бонусами в размере 3333 баллов
Необходимо написать алгоритм который будет рассчитывать:

  1. Итоговую сумму к оплате
  2. Сумму начисляемых бонусов
  3. Распределение начисляемых бонусов по позициям в заказе
  4. Распределение списанных бонусов по позициям в заказе

Ответ

Стоимость заказа — 17 400 ₽, после списания 3 333 баллов при курсе 1 балл = 1 ₽ к оплате 14 067 ₽. Размер новых бонусов зависит от согласованной базы начисления.

Примем, что начисляются 5% от денежной оплаты, дробные баллы допустимы до сотых. Тогда начисление — 703,35 балла. Если базой является вся стоимость заказа, получится 870 баллов: условие требует уточнения этого правила.

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

Позиция Списано Начислено
3 стула 172,40 36,38
1 стол 478,88 101,06
2 дивана 2681,72 565,91

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

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

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

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

Подробнее