2016-11-12 4 views
0

(C++) 私は割り当てのためのプログラムを書いています。プログラムには、それぞれのケースの後にメニューに戻るか、プログラムを終了するように促す必要があります。これを効率的に実装する方法がわかりません。何か案は?それは私が持っていない場合でも動作するはずメニューに戻ってプログラムを終了する

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

:またやめるために、私は「終了」メイン、代替メニュー(PI)で

#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ループを使用することについて考えましたが、私はそれらを使用して終了する方法と、1つのループでメニューに戻る方法がわかりません。 – PinkieBarto

答えて

0

と呼ばれる最後の関数を呼び出すしたいと思いますそれをテストしました。

EDIT: 上記のコードは、正しい入力が入力されたかどうかを確認しません。これは解決する必要があります:

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

申し訳ありません、私の間違い!編集して修正しました。私は少なくとも1回は命令を実行するためにdo-whileループを使用します。メニュー(pi)が実行された後、ユーザーは 'r'または 'q'を求めるメッセージでプロンプトを表示します(整数も使用できます)。 inner while条件は、choiceが正しくないかどうかをチェックし、そうであれば "Invalid input!"を出力します。 (coutは、最初の条件が真である場合にのみ実行されます)。その後、choiceが 'q'の場合、exitNowはtrueに設定され、ループは終了します。それが役に立てば幸い! – Mirko

+0

ああ、それははるかに明確になります、ありがとう。 さらにもう1つのことは、内側のブラッカーは実際に何をしますか?: '(!(選択肢== 'r' ||選択肢== 'q')&& cout <<"無効な入力! "" endl) ' – PinkieBarto

関連する問題