开发者

Have an issue where menu is re-occurring. using switch statement

I am having a problem where the program runs itself again after it runs it one time. When it runs every selection is ran correctly with no errors but it never exits the program. anyone?


I feel dumb, I put the while statement so that it does repeat itself. Ok now if I take of the while statement, what else do I need to take off so that I can run it?


#include <iostream>
using namespace std;

int main()
{
int in1, in2, in3;
char selection;

do
{
cout << "  Welcome to the CS221 Homework 2 Menu\n";
cout << "  ====================================\n";
cout << "  1.  Multiply two integers\n";
cout << "  2.  Divide two integers\n";
cout << "  3.  Check if a number is within the range 10-20开发者_运维百科\n";
cout << "  4.  Find the minimum of a list of 3 numbers\n";
cout << "\n";
cout << "  0.  Exit\n";
cout << "  ====================================\n";
cout << "  Enter selection: ";
cin >> selection;
cout << endl;

switch (selection)
{
    case '1':
        cout << "Please enter two integers: ";
        cin >> in1 >> in2;
        cout << in1 << " times " << in2 << " is " << (in1 * in2) << endl;
        break;

    case '2':
        cout << "Please enter two integers: ";
        cin >> in1 >> in2;
        cout << in1 << " divided by " << in2 << " is " << ((double) in1 / in2) << endl;
        break;
    case '3':
        cout << "Please enter an integer: " ;
        cin >> in1;
if ( (in1 >= 10) && (in1 <= 20) )
        {
            cout << in1 << " is within the range 10-20.\n";
        }
        else
        {
            cout << in1 << " is NOT within the range of 10-20.\n";
        }
        break;

    case '4':
        cout << "Please enter three integers: ";
        cin >> in1 >> in2 >> in3;
        cout << "The minimum is ";

        if( (in1 <= in2) && (in2 <= in3) )
        {
            cout << in1;
        }
        else if( (in2 <= in1) && (in2 <=in3) )
        {
            cout << in2;
        }
        else
        {
            cout << in3;
        }
        cout << ".\n";
        break;

    case '0':
        cout << "Goodbye.\n";

    default: cout <<selection << "is not a valid menu item.\n";

        cout << endl;
}

}while (selection != '0' );
return 0;
}


Even though it works at ideone, I guess if there is any problem, then the problem is with the type of selection, as using it means reading character by character, including newline and all. So a better choice of type for selection would be int, as it will read only integers, skipping all other characters which might be inviting problems.

I would suggest you to change the type of selection from char to int, and use 0,1, 2 etc, rather than '0','1', '2' etc.

By the way, you forgot to use break in case '0':

case 0: //<--- I changed it from '0' to 0, assuming selection's type is int
    cout << "Goodbye.\n";
    break; //add this line!

Don't forgot to change this (and in all case statements):

while(selection != 0); //changed '0' to 0


case '0':
        cout << "Goodbye.\n";

I think you're missing a return 0; statement here.


Exit works for me, but you still have incorrect minimum checking. (try whit 1 3 2)

I would write that part like.

 #include <algorithm>
 .
 .
 .

 int m = min(in1,in2);
 m = min(m,in3);
 cout << m;
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜