2017-04-06 20 views
-2

私はC++クラス用のプログラムを作成しましたが、少し問題がありましたが、解決方法がわかりません。これまで私がサイト上で尋ねた質問を見てきたので、あなたはこのテキストブックの練習に慣れているかもしれませんが、私は簡単な修正を見つけることができませんでした。クラスとC++で複数のオブジェクトを作成する

ピザに関する情報を保存するためのクラスを作成する必要があります。私はプログラムを書かれていると機能しているが、私はクラスの呼び出しは、ユーザーの入力に基づいて一連の反復をループする必要があります。私はこれがベクターを使って達成できることを知っています。私たちは学期にまだ打ち切っていないものの、間もなく私は確信しています。ベクトルなしでこれを行う方法はありますか?

ここにクラスがあります。

class Pizza 
{ 
private: 
    int type; 
    int size; 
    int numCheeseTopping; 
    int numPepperoniTopping; 
    bool cheeseTopping;  
    bool pepperoniTopping; 

public: 
    Pizza(); 
    int getType(); 
    int getSize(); 
    bool getCheese(); 
    bool getPepperoni(); 
    void setType(int t); 
    void setSize(int s); 
    void setCheese(bool choice, int temp); 
    void setPepperoni(bool choice, int temp); 

    void outputDescription(); 
    double computePrice(); 
    void outputPrice(); 
}; 

そしてコンストラクタ。

Pizza::Pizza() 
{ 
    // Set initial class values 
    type = DEEPDISH; 
    size = SMALL; 
    cheeseTopping = false; 
    numCheeseTopping = 0; 
    pepperoniTopping = false; 
    numPepperoniTopping = 0; 
} 

メインは2つの機能のみです。

// Main function 
int main() 
{ 
    // Call global functions 
    welcomeMsg(); 
    buildPizza(); 

    return 0; 
} 

私はそれがオブジェクトを作成するだけでなく、他の関数を呼び出すように私の問題は、buildPizza機能にある感情を持っています。ここでは、基本的に、私は「建物」や「発注」を介して、その後、サイクルを、彼らは評価したいと思いますどのように多くのピザをユーザーに尋ねること、多くのクラスの反復を作成するためのプログラムが欲しい...

void buildPizza() 
{ 
    char pType, pSize, tempCheese, tempPepperoni; 
    int type = 0, size = 0, numCheeseTopping = 0, numPepperoniTopping = 0; 

    // Ask user what size pizza they would like. 
    cout << "What size pizza would you like?" << endl; 
    cout << "\tS: Small" << endl; 
    cout << "\tM: Medium" << endl; 
    cout << "\tL: Large" << endl; 
    cout << "Size: "; 
    cin >> pSize; 

    // Determine which size the user input and convert the 
    // result. 
    switch (pSize) 
    { 
    case 'S': 
    case 's': 
     size = SMALL; 
     break; 
    case 'M': 
    case 'm': 
     size = MEDIUM; 
     break; 
    case 'L': 
    case 'l': 
     size = LARGE; 
     break; 
    } 

    // Ask the user which type of pizza they would like. 
    cout << endl << "What type pizza would you like?" << endl; 
    cout << "\tD: Deepdish" << endl; 
    cout << "\tH: Hand-Tossed" << endl; 
    cout << "\tP: Pan" << endl; 
    cout << "Type: "; 
    cin >> pType; 

    // Determine which type the user input and convert the 
    // result. 
    switch (pType) 
    { 
    case 'D': 
    case 'd': 
     type = DEEPDISH; 
     break; 
    case 'H': 
    case 'h': 
     type = HANDTOSSED; 
     break; 
    case 'P': 
    case 'p': 
     type = PAN; 
     break; 
    } 

    // Call Pizza Class. 
    Pizza myPizza; 

    // Call Pizza Class functions. 
    myPizza.setSize(size); 
    myPizza.setType(type); 

    // Ask user whether they want cheese or not. 
    cout << endl << "Would you like cheese (y/n)? "; 
    cin >> tempCheese; 

    // If so call setCheese. 
    if (tempCheese == 'Y' || tempCheese == 'y') 
    { 
     cout << "How many cheese toppings would you like? "; 
     cin >> numCheeseTopping; 
     myPizza.setCheese(true, numCheeseTopping); 
    } 

    // Ask user whether they want pepperoni or not. 
    cout << endl << "Would you like pepperoni (y/n)? "; 
    cin >> tempPepperoni; 

    // If so call setPepperoni. 
    if (tempPepperoni == 'Y' || tempPepperoni == 'y') 
    { 
     cout << "How many pepperoni toppings would you like? "; 
     cin >> numPepperoniTopping; 
     myPizza.setPepperoni(true, numPepperoniTopping); 
    } 

    // Call outputDescription to give user an overview 
    // of their order. 
    cout << endl << endl; 
    myPizza.outputDescription(); 
    cout << endl; 

    // Compute the cost of the pizza and display it. 
    myPizza.outputPrice(); 
} 

です各ピザは、次に合計を表示し、0を返します。

私はコードを見ているので、私はbuildPizzaから最後の2つの関数呼び出しを取り、呼び出しをmainに移動できますが、これで問題は解決しません。私は文字通り、プログラム内で気づいた監督だけです。

実行時に一度に200個の新しいオブジェクトを作成する簡単な方法はありますか?別の名前のそれぞれは?評価する数値を選んで、ユーザーにその多くのオブジェクトの情報を入力させる必要がありますか?今、プログラムは1つのピザを評価して終了します。

私はこのような何かが起こるしたいと思います:

  1. ユーザーは5ピザの注文を作成するためのプログラムを要求します。
  2. 5ピザオブジェクトが作成されます。
  3. 各オブジェクトのプログラムは、それぞれの情報を取得して設定します。
  4. プログラムは、いくつかのものを表示し、0

は私のコードでこれは可能です返す、または私が書き換えを検討する必要がありますか?コミュニティが私に与えることができるガイダンスは非常に有用です。おかげさまで

カイル

答えて

1

配列やベクトルを使用することはできませんので、単純な方法で十分です。

auto nrPizzas = getNumberOfPizzasFromUserInput(); 
for(int i = 0; i < nrPizzas; i++) { 
    auto pizza = Pizza{}; 
    // do your stuff here. 
    output to the screen here(); 
} 
+0

ご協力いただきありがとうございます。私は今夜​​それを試し、アップデートを投稿します。これはまさに私が必要としているようです。 –

0
あなたはユーザーが望むピザの数の入力を要求し、そのくらいのピザの動的配列を作成し、そのビルド機能を反復または他のあなたはピザの構造体型とリンクリストを作ることができ

メインロジックを書き換えます。あなたが注文したいピザの数を入力したくない場合は、2番目の方法をお勧めします。

関連する問題