2016-10-11 20 views
1

私のプログラムでWHILEループを繰り返すことを試みています。私はこれで約4時間今しているので、おそらく私は何かを欠いている。C++ Whileループが繰り返されない

私が入力したものに関係なく、ループを繰り返すことはできません。さらに、プロンプトで複数の文字を入力すると、後続の7つのループがすべてスキップされます。

さらに、何かが入力されたときに最後の変数が変わっていない場合でも、上記のすべての問題を解決するのに役立ちます。しかし、私はこの時点で1つだけを取るだろう。あなたの中の状態で

cout << "Welcome. Input anything to start the sales reporting process.\n\n"; 
cin >> start; **//If I enter more than one character here it skips my other loops** 
if (start == start) 
{ 
    cout << "\n\nPlease enter the amount of each sale for Darwin when prompted, only enter one at a time.\n"; 
    cout << "When you are finished entering sales, input a '1'.\n\n"; 
    cout << "Enter a sale for Darwin: "; 
    cin >> darwinSale; 
    cout << endl << endl; 
    while(darwinSale =! 1) 
    { 
     cout << "Enter a sale for Darwin: "; 
     cin >> darwinSale; 
     if (darwinSale <= 50999) 
      darwinCom = darwinSale * 0.04; 
     if (darwinSale >= 51000 and darwinSale <= 125999) 
      darwinCom = darwinSale * 0.05; 
     if (darwinSale >= 126000 and darwinSale <= 200999) 
      darwinCom = darwinSale * 0.06; 
     if (darwinSale >= 201000) 
      darwinCom = darwinSale * 0.07; 
     darwinComTotal = darwinComTotal + darwinCom; 
     darwinTotal = darwinSale + darwinTotal; 
     cout << endl << endl; 
    } 
+3

while(darwinSale!= 1)に変更しよう – xDJR1875

+3

ああ、はい、恐ろしい '=! '演算子。それを '!='に変更してください。書かれているように、 'darwinSale =! 1 'の場合、 '!'が '1'に適用され、結果(' 0')が 'darwinSale'に割り当てられ、値0が生成され、即座にループが終了します。 –

+1

また、if文が冗長であるため、start == startは、自身と比較して常にtrueになる必要があります。 –

答えて

7

、あなたが実際にチェックされています

while(drawinSale = !1) 

そして1枚の小切手1 == NULLウィッヒがあなたの代わりにそれを行う必要があります0

を返す場合:!を

while(drawinSale != 1) 
+2

NULLチェックはありません。 '1'は' true'に変換され、 'false'にネゲートされ、' 0'に変換されます。 – molbdnilo

+0

ありがとうございました!私はあなたに私の正気を借りています。 –

関連する問題