开发者

error C2046: illegal case [closed]

开发者 https://www.devze.com 2023-03-12 14:55 出处:网络
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.

Closed 9 years ago.

Improve this question

I have been looking for quite some time for an answer to this, and I haven't found one so i decided to ask. For some reason I'm getting an illegal case statement error. This is for my final project and my teacher can't even find the error. It was working fine before, but after it put in something then took it out, the case statement stopped working...even though the code's the same...

         do //start of do while loop
{
cout << "Welcome to the Sperry Store!" << '\n'; //greeting

cout << " " << '\n';
cout << "1-  Men's Authentic Original Seasonal Boat Shoe.. $79.99" << '\n';
cout << "2-  Men's Authentic Original Suede Boat Shoe..... $64.99" << '\n';
cout << "3-  Men's Mako 2-Eye Canoe Moc Boat Shoe......... $70.00" << '\n';
cout << "4-  Men's Charter 2-Eye.......................... $90.00" << '\n';
cout << "5-  Defender 2-Eye Boat Shoe..................... $65.00" << '\n';
cout << "6-  Men's Embroidered Mako Short................. $34.99" << '\n';   //user friendly menu
cout << "7-  Men's Figawi Jacket.......................... $99.99" << '\n';
cout << "8-  Men's Mako Pant.............................. $45.99" << '\n';
cout << "9-  Check Out " << '\n';
cout << "0- Start Over and Erase all current sales information. "  << '\n';


cout << " " << '\n';
cout << "Please select the item you're interested in." << '\n'; 
cout << setprecision (5) << "Your current total is: $" << total << '\n'; //displays running total 
cin >> x; //allows entered value to take user to disired case statement

switch (x) //creates switch for the case statements
{
case '1':
    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total1 = (amount * seasonal);
    total = sub_total1 + total;                                 //case statements for getting the mula

    cout << "Your current total is: $" << total << '\n';


    break; //break statemets required to end case

case '2':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total2 = (amount * original);
    total = sub_total2 + total;

    break;

    case '3':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total3 = (amount * canoe);
    total = sub_total3 + total;

    break;

    case '4':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total4 = (amount * charter);
    total = sub_total4 + total;

    break;

    case '5':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total5 = (amount * defender);
    total = sub_total5 + total;

    break;

    case '6':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

    sub_total6 = (amount * embroidered);
    total = sub_total6 + total;

    break;

    case '7':

    cout << "How jackets would you like?" << '\n';
    cin >> amount;

    sub_total7 = (amount * figawi);
    total = sub_total7 + total;

    break;

    case '8':

    cout << "How many pairs would you like?" << '\n';
    cin >> amount;

  开发者_StackOverflow中文版  sub_total8 = (amount * mako_pant);
    total = sub_total8 + total;


    break;

case '9':  //check out case statement, lets the function end

    cout << "Welcome to the check out, please finalize your order." << '\n';
    tax = total * .0875; //calculate tax
    cout << setprecision (5) << "Your total plus tax is: $" << (total = total + tax) << '\n'; //display total + tax
    cout << "Would you like your order to be shipped? (Type 1 for yes and 2 for no)" << '\n'; //allows choice for shipping or not
    cin >> shipping;

    if (shipping == '1')  //adds a shipping charge                                                                     
    {
        cout << "There is a flat shipping rate of $9.99" << '\n';
        cout << setprecision (5) << "Your new total is: $" << (total + 9.99) << '\n';
        cout << "Would you like a Receipt? (Press 1 for yes and 2 for no)" << '\n';
        cin >> receipt;


        if (receipt == '1')
        {
            cout << "                 " << "Your Receipt" << '\n';
cout << "Men's Authentic Original Seasonal Boat Shoe.."<< sub_total1 <<'\n';
cout << "Men's Authentic Original Suede Boat Shoe....."<< sub_total2 <<'\n';
cout << "Men's Mako 2-Eye Canoe Moc Boat Shoe........."<< sub_total3 <<'\n';
cout << "Men's Charter 2-Eye.........................."<< sub_total4 <<'\n';  //receipit
cout << "Defender 2-Eye Boat Shoe....................."<< sub_total5 <<'\n';
cout << "Men's Embroidered Mako Short................."<< sub_total6 <<'\n'; 
cout << "Men's Figawi Jacket.........................."<< sub_total7 <<'\n';
cout << "Men's Mako Pant.............................."<< sub_total8 <<'\n';
    cout << "If you have any questions please call (781)-452-2079."<< '\n';
    cout << "Thank you for shopping at The Sperry Store!" << '\n';
        }
        if (receipt == '2')
        {
            cout << "If you have any questions please call (781)-452-2079."<< '\n';
            cout << "Thank you for shopping at The Sperry Store!" << '\n';
        }


    }
    if (shipping == '2') //checks out without shipping
    {
                    cout << "                 " << "Your Receipt" << '\n';
cout << "Men's Authentic Original Seasonal Boat Shoe.."<< sub_total1 <<'\n';
cout << "Men's Authentic Original Suede Boat Shoe....."<< sub_total2 <<'\n';
cout << "Men's Mako 2-Eye Canoe Moc Boat Shoe........."<< sub_total3 <<'\n';
cout << "Men's Charter 2-Eye.........................."<< sub_total4 <<'\n';  //receipit
cout << "Defender 2-Eye Boat Shoe....................."<< sub_total5 <<'\n';
cout << "Men's Embroidered Mako Short................."<< sub_total6 <<'\n'; 
cout << "Men's Figawi Jacket.........................."<< sub_total7 <<'\n';
cout << "Men's Mako Pant.............................."<< sub_total8 <<'\n';
    cout << "If you have any questions please call (781)-452-2079."<< '\n';
    cout << "Thank you for shopping at The Sperry Store!" << '\n';
        }
        if (receipt == '2')
        {
            cout << "If you have any questions please call (781)-452-2079."<< '\n';
            cout << "Thank you for shopping at The Sperry Store!" << '\n';
        }

        no_ship(); //declares function

    }

    break;

    case '0':  //restart order statement

    cout << "Are you sure you would like to erase all data (This choice is non-reversable)?" << '\n';
    cout << "Press 1 for yes and 2 for no" << '\n';
    cin >> erase;

    if (erase == '1') //erases the data
    {
        shipping = 0;
        erase = 0;
        amount = 0;
        total = 0;          
        tax = 0;
        x = 0;
        sub_total1 = 0;
        sub_total2 = 0;
        sub_total3 = 0;
        sub_total4 = 0;
        sub_total5 = 0;
        sub_total6 = 0;
        sub_total7 = 0;
        sub_total8 = 0;
    }
    if (erase == '2') //returns to menu
    {
        cout << setprecision (4) << "Your current total is: $ " << total << '\n';  //returns user to the menu without erasing order
    }

    break;

    system("command/ccls");


}



while (x != '9'); //end of while loop (when x does not = 9)


return 0;
}

void no_ship() // displays the no_ship function data
{
    cout << "Your item will be ready in 1-2 business days." << '\n';
    cout << "If you have any questions please call (781)-452-2079."<< '\n';
    cout << "Thank you for shopping at The Sperry Store!" << '\n';
}

I apologize for such a long code but I have no idea where the error is. Here is the error in the compiler:

Compiling...
final project.cpp
H:\Comp. Prog\final project.cpp(232) : error C2046: illegal case
Error executing cl.exe.
final project.exe - 1 error(s), 0 warning(s)


You have too many closing braces, specifically the one immediately preceding break; case '0':.

This is closing off your switch statement which is why it's complaining about the naked case.

Having said that, the deletion of that extraneous brace will cause another problem since you then don't close off the switch statement at all. Immediately after the case '0' block, you close off the do loop without first closing off the switch. You'll need to put another } in there.


Might I suggest that you refactor your code to make it a little easier to read? In my opinion, case blocks should have a small number of lines in them (e.g., 10). Any more than that, or if there's a lot of indent levels, and it should just call a function to do the grunt-work.

That would have probably made your error more apparent since, if it didn't avoid it altogether, it would have at least moved it to the case '9' function.


You've got an extra closing brace in case '9':

if (shipping == '2') //checks out without shipping
{
    // skipped
    } // <-------
    if (receipt == '2')
    {
        cout << "If you have any questions please call (781)-452-2079."<< '\n';
        cout << "Thank you for shopping at The Sperry Store!" << '\n';
    }

    no_ship(); //declares function

}


You should really work on your indentation, as it improves readability for you and others. Your problem is that case '0': is outside of the switch statement (with proper indentation that would have jumped at you).

0

精彩评论

暂无评论...
验证码 换一张
取 消