2013-10-03 51 views
-3

我的代码几乎完成,但我不知道如何在switch语句中插入一个while循环,所以如果用户输入一个负数,它会给出一条消息,“该值必须是正数,请重新输入:”。以下是我的代码。如何在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

感谢您的帮助罗布欣赏它! – user2837593

回答

0

您不必按照您的想法插入while循环。如果输入的输入是负数,则使用continue声明。

-2

您可以重复相同的任务与DO-同时的帮助:

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); 
+0

我从过去的30分钟试过这个,但由于我是新来的,所以不知道如何编写代码,每次都会在提交阶段给代码提供sysntax错误。 – user2841164

+0

我从来没有遇到过这个问题,所以我认为这是因为这个例子没有缩进。你是否也选择了代码并按下CTRL + K进行格式化? – Jamal

+0

是的,我也选择CTRL + K,并做了所有的建议,但从来没有登上:( – user2841164