#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
значение, если оно вам все равно не нужно выше).