2017-02-17 9 views
0

選択後に画面をクリアしたいのですが、どういうわけか分かりません。それはDisplay()関数とCreate New Purchaseなどのものを表示します。なぜなら、whileループでは?while( "CLS")がなぜ動作していないのですか?

while (selection != -1) // While for create new purchase 
     { 
      cout << "Create New Purhcase" << endl << endl; 
      cout << "1. Display Item" << endl; 
      cout << "2. Create a New Purchase" << endl << endl <<endl; 
      cout << "0. Back to Main Menu" << endl; 
      cout << "Enter Option:"; 

      cin >> selection; 

      //Back to main menu 
      if (selection == 0) 
      { 
       system("CLS"); 
       break; 
      } 
      if (selection == 1) 
      { 
       system("CLS"); 
       cout << "Display Menu" << endl; 
       Display(); 
      } 

void Display() 
{ 
system("CLS"); 
temp = itemHead; //start at the first node 
cout << "Dispaly Menu" << endl << endl; 

while (temp != NULL) 
{ 
    cout << "ID:" << temp->itemid << endl; 
    cout << "Item Name:" << temp->name << endl; 
    cout << "Item Type:" << temp->type << endl; 
    cout << "Item Price" << temp->cost << endl; 
    cout << endl << endl; 
    temp = temp->next; //forward to the next node 
} 

は}

+1

http://stackoverflow.com/questions/19913446/why-should-the-system-function-be-avoided-in-c-and-c –

+0

@Pepper:問題を具体的な最小限の例読者はここで試してみることができ、そのコード全体を投稿することができます。今のところ私はそのような再現可能な例がないという疑問を終わらせることに投票しています。 –

+0

@NeilButterworth:Windowsプログラムで画面をクリアしようとする初心者に、 'system'を避けるべき理由についての質問へのリンクを引用しました。文脈は重要です。この文脈では、リンクは真実ではありません。 –

答えて

-1

ここでの問題は、それがwhileループの一部であるため、あなたのコードは、Display()機能を印刷した後停止しないということです。その結果、メニューが印刷され、次にオプションが再び印刷されます。メニューが印刷されたループが一時停止した後に、コードを変更することを確実にするために

if (selection == 1) 
{ 
    system("CLS"); 
    cout << "Display Menu" << endl; 
    Display(); 
    cout << endl << endl; 
    system("pause"); 
} 

system("pause")アルゴリズムファイルの一部であるので、あなたは何を含める必要はありません。このようにして、メニュー全体がDisplay()関数から出力され、改行がいくつか表示され、最後にENTERキーを押すように促されます。 ENTERキーを押すまで、whileループは続行されません。

注:他の方法もありますが、これは最も簡単で最短です。私の答えに関するご質問がある場合、または私の答えがうまくいかない場合は、コメント欄にお知らせください。

関連する問題