Как я могу убедиться, что общая сумма выводит значение, а не просто 0

#c #variables #output #logic

Вопрос:

В программе нет ошибок, но каждый раз, когда я запускаю программу, общая сумма получается равной 0, несмотря на то, что значения «кол-во» и «стоимость» имеют значения. Как мне написать это таким образом, чтобы total фактически выводила число, рассчитанное путем умножения количества и стоимости?

 {
    char itemAnswer = 'a';
    double qty = 0;
    double cost = 0;
    double total = qty*cost;
    double payment = 0;
    double change = payment-total;
    
    
    std::cout << "Which item would you like to buy?" << std::endl;
    std::cout << "a. Notebook | b. Pencil | c. Ballpen" << std::endl;
    std::cin >> itemAnswer;
    

        if(itemAnswer == 'a' || itemAnswer == 'A')
         {
            double cost = 15.50;

            std::cout << "You chose notebook" << std::endl;
            std::cout << "Enter quantity: ";
            std::cin >> qty;
            std::cout << "You added " << qty << " of notebook/s into your cart." << std::endl;

            std::cout << "Your total will be " << total << " Php" << std::endl;
            std::cout << "Enter payment: ";
            std::cin >> payment;

                while (payment < qty * cost)
                {
                    std::cout << "You did not pay enough money" << std::endl;
                    std::cout << "Enter money again: ";
                    std::cin >> payment;
                }
                if (payment >= qty * cost)
                {
                    std::cout << "You paid " << payment << " Php" << std::endl;
                    std::cout << "Your change is " << payment - qty * cost << " Php" << std::endl;
                } ````
 

Комментарии:

1. double total = qty*cost; выполняется ли вычисление там, где оно размещено, total не изменяется впоследствии, когда вы изменяете qty или cost

2. auto total = [amp;]() { return qty * cost; }; total() использование может решить вашу проблему. Не уверен, что это правильный путь для начинающих, хотя.

Ответ №1:

C не выполняет символьных вычислений, вместо этого он принимает текущие значения переменных, т. Е. Когда вы пишете

 int a = 0;
int b = 0;
int c = a   b;
 

и позже вы присваиваете различные значения a и b , например

 a = 1;
b = 3;
 

c все равно сохранит значение 0 и не будет автоматически обновляться до 4, если вы не сделаете это c = a b; снова после изменения a и b , как указано выше (или вы можете переместить начальное int c = a b; значение в то место, где вам действительно нужно c значение, если оно вам все равно не нужно выше).