2016-11-12 79 views
0

(C++) 所以我爲我的任務寫一個程序,它需要的程序提示用戶對每個案件後,返回菜單或退出程序,問題我不知道如何有效地實現這一點。有任何想法嗎?此外戒菸,我想打電話給一個名爲「退出」回到菜單和退出程序

#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; 
} 
+1

閱讀有關您最喜愛的C++教科書中的循環。 –

+0

是的,我想過使用do_while循環,雖然我不知道如何使用它們退出並在一個循環中返回到菜單。 – PinkieBarto

回答

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

嗯,我試過這個,雖然輸入r或q後它只顯示「無效輸入」。你介意解釋一下這段代碼嗎?我只在9月份開始編程:P – PinkieBarto

+0

對不起,我的錯誤!編輯並更正。我使用do-while循環至少運行一次指令。執行菜單(pi)後,用戶會收到一條消息,詢問'r'或'q'(也可以使用整數,只是更改類型)。 inner while條件檢查選項是否不正確,如果是,則輸出「無效輸入!」。 (只有當第一個條件爲真時才執行cout)。之後,如果選擇是'q',則exitNow設置爲true,並且結束循環。希望能幫助到你! – Mirko

+0

啊,這使得它更清晰,非常感謝。 還有一件事,內膽實際上做了什麼?: '(!(choice =='r'|| choice =='q')&& cout <<「Invalid input!」<< endl)' – PinkieBarto