Having issues making a menu that will subtotal and then display a grand total. My professor is no help. It would be awesome if anyone can point me in the right direction. Because i have no idea why its not working.
The program works fine until I get to the grand total, then it will not add together all the orders placed. Please help.

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
const int COFFEE_CHOICE = 'A',
TEA_CHOICE = 'B',
HOT_CHOCOLATE_CHOICE = 'C',
CAPPUCCINO_CHOICE = 'D',
EXIT_CHOICE = 'E';

// Constants drink prices
const double COFFEE = 1.00,
TEA = 0.75,
HOT_CHOCOLATE = 1.25,
CAPPUCCINO= 2.50;

// Variables
int number;       // Number of cups
double charges;   // Monthly charges
double TOTAL = 0.0;

// Output formatting.
cout << fixed << showpoint << setprecision(2);

do
{
<< "A. Coffee           \$1.00\n"
<< "B. Tea              \$ .75\n"
<< "C. Hot Chocolate    \$1.25\n"
<< "D. Cappuccino       \$2.50\n"
<< "E. Exit\n\n"
cin >> choice;

while (choice < COFFEE_CHOICE || choice > EXIT_CHOICE)
{
cout << "Please enter a valid selection: ";
cin >> choice;
}

// Validate and process the user's choice.
if (choice != EXIT_CHOICE)
{
// Get the number of cups.
cout << "How many cups would you like? ";
cin >> number;

switch (choice)
{
case COFFEE_CHOICE:
charges = number * COFFEE;
break;
case TEA_CHOICE:
charges = number * TEA;
break;
case HOT_CHOCOLATE_CHOICE:
charges = number * HOT_CHOCOLATE;
break;
case CAPPUCCINO_CHOICE:
charges = number * CAPPUCCINO;
}
// Display the total charges.
cout << "Your sub total is \$" << charges << endl;
}
else if (choice == EXIT_CHOICE)
{
TOTAL += charges;
cout << "Your grand total is \$" << TOTAL << endl;
}
}
while (choice != EXIT_CHOICE);
return 0;
}

The issue is that you set charges=number*PRICE_CONSTANT each time, without saving the old value. Basically here is what happens if you trace charges (program tracing is a very valuable debugging tool):

Charges: ??? (since its un-initiated it could be anything, changing line 24 to double charges=0.0; would fix this)
Choice: Coffee, number: 2
Charges: 2.00 (charges=number*COFFEE;//=2*1.00=2.00)
Choice: Hot Chocolate, number: 1
Charges: 1.25 (note that the old value of 2.00 is gone)
Choice: EXIT
Charges: 1.25, TOTAL: 1.25

The solution is thus to add charges to total as you create them. Moving line 77 to just after line 71 should fix your problem.

Your amazing! Is it too soon to tell you I love you? lol. Ive been beating my head against the wall all morning. Why is it its always a simple solution? Thank you so much!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.