(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;
}
答案 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();