AnsBekk
AnsBekk

Reputation: 59

Replace if else with Switch statement

I am working on the code below and trying to use switch statement instead of if/else. The problem is that I cannot figure out how to get the switch to work. A few things a tried: I know that every time an expression is equal to the case constant, the code then will be executed. Example:

switch (expression)  
{
  case 1:
        // code to be executed if 
        // expression is equal to 1;
        break;
}

My code below has a similar concept, but I cannot get it display the calculation. There are no errors, but it does not display the total price.

#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

int main()
{

    const int CHEESE_PIZZA = 11;
    const int SPINACH_PIZZA = 13;
    const int CHICKEN_PIZZA = 14;

    cout << " *********** MENU ***********" << endl;
    cout << setw (9) << "ITEM" << setw (20) << "PRICE" << endl;
    cout << " (1) Cheese Pizza" << setw (8) << "$" 
            << CHEESE_PIZZA << endl;
    cout << " (2) Spinach Pizza" << setw (7) << "$" 
            << SPINACH_PIZZA << endl;
    cout << " (3) Chicken Pizza" << setw (7) << "$" 
            << CHICKEN_PIZZA << endl;
    cout << endl;

    cout << "What would you like? ";
    int option;
    cin >> option;
    cout << "You picked pizza option " << option << endl;

    cout << "How many orders? ";
    int quantity;
    cin >> quantity;
    cout << "You choose quantity " << quantity << endl;

    int price;
    switch (option)
    {
    case 1:
        price = CHEESE_PIZZA;
        break;
    case 2:
        price = SPINACH_PIZZA;
        break;
    case 3: 
        price = CHICKEN_PIZZA;
        break;
    default:
        cout << "Please select valid item from menu. " << endl;
    
    }
        return 1;
    int amount = price * quantity;
    cout << "Your Bill: $ " << amount << endl;
    
    cout << endl;


    return 0;
}

I am confused about the output for any input other than 1, 2, and 3 in case 4.

The if/else statement works:

int price;
if (option == 1) price = CHEESE_PIZZA;
else if (option == 2) price = SPINACH_PIZZA;
else if (option == 3) price = CHICKEN_PIZZA;
else {
cout << "Please select valid item from menu. " << endl;
return 1;
}

Upvotes: 0

Views: 1496

Answers (1)

David Yi
David Yi

Reputation: 53

The problem, from eyeballing, appears to be because you return 1 outside the switch statement, which is why the code after it never gets run.

You should replace your case 4 with a default: label and move the return 1; into that case as well as add a break statement under case 3.

Upvotes: 2

Related Questions