-3

My code is almost finished but im not sure how to insert a while loop inside the switch statement so if the user enters a negative number it gives a message, "The value must be positive. Please re-enter: ". Below is my code.

#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);
}
4

2 回答 2

0

您不必while像您想的那样插入循环。使用continue语句,如果输入的输入是否定的。

于 2013-10-03T04:21:29.983 回答
-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);
于 2013-10-03T04:50:45.993 回答