1. ## counting input values

I am trying to code(c++) a count and sum off of a menu eg. if I ordered 2-B's, 1-A and 3-C's the amount would be 27. My code below only shows 21.25 which seems that it isn't adding the first input. Any suggestions on how I wrote my code?

Thanks for the help

Bill
Code:
```#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main( )
{
//declare variables
char comboType = ' ';
double comboPrice = 0.0;
double orderTotal = 0.0;

//input data

cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
comboType = toupper(comboType);
while (comboType != 'T')
{
cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
orderTotal += comboPrice;
switch (comboType)
{
case 'A':
comboPrice = 4.25;
break;
case 'B':
comboPrice = 5.75;
break;
case 'C':
comboPrice = 5.25;
break;
case 'D':
comboPrice = 3.75;
break;
//end switch
}
// end while
}
//display output
if (comboType = 'T')
{
cout << "Please pay this amount: " << orderTotal << endl;
}
else
cout << "No items ordered!" << endl;

system("pause");
return 0;
}```

2. Hello,

I'm not sure if i'm misunderstanding you, but 31.5 should be correct. You could just round up and change the result from double to int to 32 I think.

B = 5.75
A = 4.25
C = 5.25

The code adds one after the other in the order they are added.. ( I also moved the case definition up the code a bit)

ordertotal(5.75) = ordertotal(0) + comboPrice(5.75)
ordertotal(11.50) = ordertotal(5.75) + comboPrice(5.75)
ordertotal(15.75) = ordertotal(11.50) + comboPrice(4.25)
ordertotal(21.00) = ordertotal(15.75) + comboPrice(5.75)
ordertotal(26.75) = ordertotal(21.00) + comboPrice(5.75)
ordertotal(31.50) = ordertotal(26.75) + comboPrice(5.75)

All done and over with ordertotal == 31.50 !! 31 !! 32 depending on your rounding.

I believe your total is correct, but any more experienced please feel free to correct me.

Edit: I'm not sure how you're getting 21.25 as you are using +=comboPrice, i'm sure you know this simple means (ordertotal = ordertotal + comboprice), try defining the switch before you start reading into it, makes things a bit more clear at least the very least

3. Thanks so much Spazmotic,

I agree with you, but I screwed up... it's 3 D's and not 3 C's.....but if you add the 2 B's total would be 11.50 and then A would be 4.25 and then 3 D's would be 11.25for a grand total of 27 and my program gets 21.25

so are you saying to put the switch before the while?

4. I don't have the experience to tell you "WHY" but i know "HOW"..

Follow the directions in my previous post regarding clarity and you will get 27 exactly.

Good luck mate

EDIT: (Because of possible homework solutions..i'm trying to make this as vague as possible while helping you..to the experts and moderators..If i went too far..tell me to delete or delete yourself please )

5. Actually..I do know why now.

Look at your code carefully and consider the EXACT order of things that are happening.... remember C++ reads from the top down..open up kwrite or kate or notepad or whatever you have and write in plaintext exactly what you see happening in that loop, and you will understand why you are short.

6. I know you moved the case up a bit, just trying to understand location from your

"try defining the switch before you start reading into it, makes things a bit more clear at least the very least"

I am sure you now know I am a newbie..

7. Thanks so much,,, I figured it out with your help.....

I just moved
cout<< "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
orderTotal += comboPrice;
under the //end switch bracket....

many thanks for walking me through this!

8. Lol, you're making this very difficult on me, because i'm new the forum and know they don't like giving away the direct answers because this forum does not condone cheating on homework and I agree.. so I am going to re-phrase this the best I can.

Remember C++ reads top down.. as you either did not quite understand how to or did not open up a notepad and type out exactly what you saw....I am going to emulate this...I will not provide any further code instruction because from here on out I believe i WILL give you the answer if i do.. but I will show you the novice diagnosis technique I have been using when i get either get compile errors or segmentation faults 20 times in a row (I'm not even as far as you, I don't use classes yet, this is just math and logic, so you will get it )

The first segment of [code] here will be your while loop, the second will be my "notepad" illustration

Code:
```cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
comboType = toupper(comboType);
while (comboType != 'T')
{
cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
orderTotal += comboPrice;
switch (comboType)
{
case 'A':
comboPrice = 4.25;
break;
case 'B':
comboPrice = 5.75;
break;
case 'C':
comboPrice = 5.25;
break;
case 'D':
comboPrice = 3.75;
break;
//end switch
}
// end while
}```

Code:
```"Enter item ordered[A/B/C/D] or T to calculate total:"
Read what was typed in to comboType

So long as comboType does not equal the letter 'T' do the following...
"Enter item ordered[A/B/C/D] or T to caculate total:"
Read what was typted in and store it in variable comboType

ordertotal(0.0) = orderder(0.0) + comboprice(0.0)
(or)

NOW what does A B C D mean?

A4.25
B5.75
C5.25
D3.75

did they enter T as the input?

Yeah? Ok, Tell me how much they owe ( Ordertotal)```

The main thing I want you to look at here, is your first calculation, the first time that ordertotal is calculated, think of what it would be missing by you having this calculating this early..and think of the EXACT amount your current program result is short of what it should be.

.... Gods of this forum..please don't ban me...I know that was too much

9. Hey again,

Good job man, It's all about order , i'm learning that alot, C++ can be both forgiving and a cruel mistress at times, she'll call out your mistakes, but if it's the order or math you got wrong, then it's all downhill

10. Originally Posted by Spazmotic
Lol, you're making this very difficult on me, because i'm new the forum and know they don't like giving away the direct answers because this forum does not condone cheating on homework and I agree..
At the same time, it is a programming resource and sometimes the most helpful thing is example or demonstration code. Not everyone here is doing homework, and the needs and priorities of that community should be balanced with the need to avoid becoming a place where people come to get their homework done for free.

11. as I always say,,, " You don't learn a thing if someone gives you the answer, However, a nudge in the right direction can only lead to learning the answer"

12. I agree MK... But I don't wish to be banned before day two..it's just not stylish

Do you just try to determine whether they're doing it for a class and make a judgement call or actually ask?

Since from his reply and the explaining quickly the way he did., i believe he did figure this out and I will demonstrate here the proper way and why it was shooting the wrong answer, for google searchs for the resource .

Before this begins, I would like to make a quick note to harley...i'm going to be changing something in my version..check out what it is..and see if you notice the redundancy removal.

Original:

Code:
```//declare variables
char comboType = ' ';
double comboPrice = 0.0;
double orderTotal = 0.0;

//input data

cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
comboType = toupper(comboType);
while (comboType != 'T')
{
cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;
orderTotal += comboPrice;
switch (comboType)
{
case 'A':
comboPrice = 4.25;
break;
case 'B':
comboPrice = 5.75;
break;
case 'C':
comboPrice = 5.25;
break;
case 'D':
comboPrice = 3.75;
break;
//end switch
}
// end while
}
//display output
if (comboType = 'T')
{
cout << "Please pay this amount: " << orderTotal << endl;
}```
and now, a bit cleaner...

Code:
```        //declare variables
char comboType = ' ';
double comboPrice = 0.0;
double orderTotal = 0.0;

//input data
cout << "Enter item ordered [A/B/C/D] or T to calculate total: ";
cin >> comboType;

while (comboType != 'T'){

comboType = toupper(comboType);
switch (comboType){
case 'A':
comboPrice = 4.25;
break;
case 'B':
comboPrice = 5.75;
break;
case 'C':
comboPrice = 5.25;
break;
case 'D':
comboPrice = 3.75;
break;
//end switch
}

cin >> comboType;
orderTotal += comboPrice;

//end while
}

//display output
if (comboType = 'T'){
cout << "Please pay this amount: " << orderTotal << endl;```

In the first code, within the loop, comboType was being redefined as 0.0 before the cases were defined, so no matter what, he would be missing exactly 5.75...or the first entry he put in during the sequence of B B A D D D where B == 5.75... since the first
Code:
`orderTotal += comboPrice;`
was ran before the actual defintion of "B" was run, ...just 0.0 = 0.0 + 0.0 and thus the first entry would always be missed, whether this be B B A D D or A B A D D or C B A D D etc..

Hope this helps, if you have any questions, just ask. ( And for the expert vets here, please feel free to clarify)

EDIT: Sorry for the spaces instead of TABS..nano formats oddly(But they should be spaced to standard tabs )...

13. First of all, my apologies, it seems that I shouldn't have asked a question. I didn't ask for the answer just someone to review what I had and maybe steer me in the correct direction. In which Spazmotic did steer me in the correct direction. to you I thank you for not giving the answer. and you can see how quickly I figured it out with the direction you gave. I don't want to get anyone into trouble!

Secondly,
I see where the toupper is redundant and the counter moved, it is cleaner than mine, but will stick with mine because it works and I did it. I don't want anyone elses work to use!

again, sorry and many thanks Spazmotic!