Программа расчета стоимости покупок с учетом скидок

Помогите ! Составить программу расчета стоимости покупок с учетом скидок в зависимости от общей суммы покупки,кол-во скидок не меньше 3-х ! Не могу сообразить как решить, Путаюсь с циклами :(

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

/*
 * Составить программу расчета стоимости покупок с учетом скидок
 * в зависимости от общей суммы покупки,
 * количество скидок не меньше 3-х.
*/

// Товар
class Product
{
    public:
        // Получение цены товара
        float get_price()
        {
            return this->price;
        }

        // Получение цены товара со скидкой
        float get_discount_price()
        {
            float discount_value = this->price / 100.0 * this->discount;
            return this->price - discount_value;
        }

        float set_price(float value)
        {
            this->price = value;
            return value;
        }

        float get_discount()
        {
            return this->discount;
        }

        float set_discount(float value)
        {
            this->discount = value;
            return value;
        }
    private:
        // Цена товара
        float price;
        // Скидка в процентах
        float discount;
};

int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "");

    // Список покупок (корзина)
    std::vector<Product *> basket;

    // Временные переменные для хранения вводимых данных
    float buf_price;
    float buf_discount;

    // Общая сумма товаров без скидки
    float total_price = 0.0;
    // Общая сумма товаров со скидкой
    float total_discount_price = 0.0;

    // Определяет завершение ввода пользователем
    std::string buf_continue = "";

    do {
        std::cout << "Введите цену товара: ";
        std::cin >> buf_price;
        std::cout << "Введите размер скидки (в процентах): ";
        std::cin >> buf_discount;

        // Создание экземпляра класса Product
        Product* item = new Product();

        // Сохранение введенных данных товара
        item->set_price(buf_price);
        item->set_discount(buf_discount);

        // Кладем товар в корзину
        basket.push_back(item);
        std::cout << std::endl;

        std::cout << "Продолжить покупки? (Y/n): ";
        std::cin >> buf_continue;

        std::cout << std::endl;
    } while (buf_continue != "n" && buf_continue != "N");


    // Вычисление общей суммы товаров (со скидкой и без)
    for (unsigned int i = 0; i < basket.size(); i++) {
        total_price += basket.at(i)->get_price();
        total_discount_price += basket.at(i)->get_discount_price();
    }

    // Вывод данных
    std::cout << "Количество товаров: " << basket.size() << std::endl;
    std::cout << "Общая сумма заказа: " << total_price << std::endl;
    std::cout << "Общая сумма заказа (со скидкой): " << total_discount_price << std::endl;

    return 0;
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.