回到菜单&退出该计划

时间:2016-11-12 22:51:18

标签: c++ menu switch-statement exit

(C ++) 所以我为我的作业编写了一个程序,它要求程序提示用户返回菜单或在每个案例后退出程序,问题是我不确定如何有效地实现这个。有任何想法吗?另外,对于退出,我想调用最后一个名为' exit'

的函数
 #include <iostream>                                                                //libraries


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

int menu(double pi);
int circleArea(double pi);
int circleCircum(double pi);                                                    //function declarations for the demanded shapes, passing pi in order to reuse it in both circle calculations
int rectanArea();
int triangArea();
int cubVol();
void exit();

int main()
{
    double pi = 3.14159265359;                                                  //declaration of pi which I will be using in the circles (passed)
    menu(pi);
    system("PAUSE");
    return 0;
}

int menu(double pi)                                                             //menu for choosing a shape
{
    int choice = 0;
    cout << "Shape Calculator Created By:\n\nPlease select what you wish to calculate:\n\n1 - Area of a Circle\n\n2 - Circumference of a Circle\n\n3 - Area of a Rectangle\n\n4 - Area of a Triangle\n\n5 - Volume of a Cuboid\n\n ";
    cin >> choice;
    system("CLS");

     switch (choice)                                                                //switch case for each shape
        {
        case 1:
            circleArea(pi);
            break;
        case 2:
            circleCircum(pi);
            break;
        case 3:
            rectanArea();
            break;
        case 4:
            triangArea();
            break;
        case 5:
            cubVol();
            break;
        default:
            cout << "Invalid input! Please try again.\n\n";
            break;
        }
    return 0;
}

int circleArea(double pi)                                                       //the area of circle function
{
    double radius = 0;

    cout << "Please enter the radius of your circle:\n\n";                      //asks for the radius first
    cin >> radius;
    system("CLS");

    cout << "The area of your Circle is:\n\n" << radius*radius*pi << "cm/2\n\n";                                //display the calculation which is calculated using the user input, essentially the formula is PI*radius(squared) just reversed
    return 0;
}


int circleCircum(double pi)                                                     //the circumference of circle function
{
    double radius = 0.0;

    cout << "Please enter the radius of your circle:\n\n";                      //asks for radius first
    cin >> radius;
    system("CLS");

    cout << "The circumference of your Circle is:\n\n" << pi*radius * 2 << "cm\n\n";                            //calculates the circumference using the user input, formula is 2*PI*radius but reversed
    return 0;
}

int rectanArea()                                                                //function for area of rectangle
{
    double rectanHeight = 0.0;
    double rectanWidth = 0.0;

    cout << "Please enter the height of your Rectangle:\n\n";                   //asks for input for the height first
    cin >> rectanHeight;
    system("CLS");

    cout << "Height = " << rectanHeight << endl << endl << "Please enter the width of your Rectangle\n\n";      //shows the inputted height above, then asks for input of width
    cin >> rectanWidth;
    system("CLS");

    cout << "The area of your Rectangle is:\n\n" << rectanHeight*rectanWidth << "cm/2\n\n";                     //calculates the area of rectangle using the input, formula is height*width then displays it
    return 0;
}

int triangArea()                                                                //function for area of triangle
{
    double triangBase = 0.0;
    double triangHeight = 0.0;

    cout << "Please enter the base measurement of your Triangle\n\n";           //asks for input of the base first
    cin >> triangBase;  
    system("CLS");

    cout << "Base = " << triangBase << endl << endl << "Please enter the height of your Triangle\n\n";          //displays inputted base and then asks for the height
    cin >> triangHeight;
    system("CLS");

    cout << "The area of your Triangle is:\n\n" << triangBase*triangHeight / 2 << "cm/2\n\n";                   //calculates area using user input and displays it, formula is base*height/2
    return 0;
}

int cubVol()                                                                    //function for volume of a cuboid
{
    double cubLength = 0.0;
    double cubWidth = 0.0;
    double cubHeight = 0.0;

    cout << "Please enter the length of your Cuboid\n\n";                       //asks for input of length first
    cin >> cubLength;
    system("CLS");

    cout << "Length = " << cubLength << endl << endl << "Please enter the width of your Cuboid\n\n";            //displays inputted length and asks for the width
    cin >> cubWidth;
    system("CLS");

    cout << "Length = " << cubLength << endl << "Width = " << cubWidth << endl << endl << "Please enter the height of your Cuboid:\n\n";        //displays inputted length and width, asks for the height finally
    cin >> cubHeight;
    system("CLS");

    cout << "The volume of your Cuboid is:\n\n" << cubLength*cubWidth*cubHeight << "cm/3\n\n";                  //displays the calculation using inputted information, formula is length*width*height
    return 0;

}

void exit()
{
        cout << "**************************************" << endl;
        cout << "**************************************" << endl;
        cout << "*******    T H A N K  Y O U    *******" << endl;
        cout << "*******    F O R  U S I N G    *******" << endl;
        cout << "******* T H I S  P R O G R A M *******" << endl;
        cout << "**************************************" << endl;
        cout << "**************************************" << endl;
}

1 个答案:

答案 0 :(得分:0)

在您的主菜单中,替换菜单(pi):

char choice;
bool exitNow = false;

do{
    menu(pi);
    cout<<"Return (r) or quit (q)?"<<endl;
    cin>>choice;
    if(choice == 'q')
        exitNow = true;
} while (!exitNow);
exit();

即使我没有测试它也应该有用。

编辑: 上面的代码不会检查是否输入了正确的输入。这应该解决:

char choice = 0;
bool exitNow = false;

do{
    menu(pi);

    do{
        cout<<"Return (r) or quit (q)?"<<endl;
        cin>>choice;
    }
    while( !(choice == 'r' || choice == 'q') && cout<<"Invalid input!"<<endl);

    if(choice == 'q')
        exitNow = true;
} while (!exitNow);
exit();