我的代码差不多完成但我不知道如何在switch语句中插入while循环,所以如果用户输入一个负数,它会给出一条消息,“值必须为正。请重新输入:”。以下是我的代码。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
const double PI = 3.14;
void showMenu();
double area (double, double);
double area (double);
double volume (double, double, double);
double volume (double);
int main()
{
char choice;
double length, width, height, radius, tot_area, tot_volume;
cout << fixed << setprecision(2);
do
{
showMenu();
cout << "Please select 1-5: " << endl;
cin >> choice;
switch (choice)
{
case '1':
cout << "Please enter the length of a rectangle: " << endl;
cin >> length;
cout << "Please enter the width of a rectangle: " << endl;
cin >> width;
tot_area = area(length, width);
cout << "The area of the rectangle is " << tot_area << endl;
break;
case '2':
cout << "Please input the radius of the circle: " << endl;
cin >> radius;
tot_area = area(radius);
cout << "The area of the circle is " << tot_area << endl;
break;
case '3':
cout << "Please enter the length of a box: " << endl;
cin >> length;
cout << "Please enter the width of a box: " << endl;
cin >> width;
cout << "Please enter the height of a box: " << endl;
cin >> height;
tot_volume = volume(length, width, height);
cout << "The volume of the box is " << tot_volume << endl;
break;
case '4':
cout << "Please input the radius of a sphere: " << endl;
cin >> radius;
tot_volume = volume(radius);
cout << "The volume of the sphere is " << tot_volume << endl;
break;
case '5':
break;
default :
cout << "That is a invalid operation" << endl;
break
}
}
while (choice != '5');
cout << "Thank you for using my program." << endl;
return 0;
}
void showMenu()
{
cout << "1. Calculate the area of a rectangle" << endl;
cout << "2. Calculate the area of a circle" << endl;
cout << "3. Calculate the volume of a box" << endl;
cout << "4. Calculate the volume of a sphere" << endl;
cout << "5. Quit" << endl;
}
//For area of a rectangle
double area (double length, double width)
{
return length * width;
}
//For area of a circle
double area (double radius)
{
return PI * pow (radius, 2.0);
}
//For volume of a box
double volume (double length, double width, double height)
{
return length * width * height;
}
//For volume of a sphere
double volume (double radius)
{
return (4.0/3.0) * PI * pow (radius, 3.0);
}
答案 0 :(得分:0)
您不必按照自己的想法插入while
循环。如果输入的输入为负数,请使用continue
语句。
答案 1 :(得分:-2)
您可以在do-while:
的帮助下重复相同的任务int flag=0;
do {
cout << "Please enter the length of a rectangle: \n ";
cin >> length;
cout << "Please enter the width of a rectangle:\n ";
cin >> width;
if (length<0 || width<0)
{
flag=1;
cout << "please enter the positive number";
}
} while(flag==1);