如何在switch语句中插入while循环?

时间:2013-10-03 04:09:36

标签: c++

我的代码差不多完成但我不知道如何在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);
}

2 个答案:

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