2016-07-07 13 views
-3

私は迷惑な問題にぶち当たっています。私が取り組んでいる問題は、私が最初にcin >> statementに-1と入力すると、私はそれが欲しいのと同じように終了しません。簡単な質問。私の "While"ループに問題があります

私はその悪い癖を話されたので、私はループ内で"break"を使用しないようにしています。

FYI moveOnはtrueに初期化されます。ここ はコードです:

while(moveOn){ 

cout << "Enter info:"; 
cin >> weight; 
if(weight == -1){ 
    moveOn = false; 
} 

weight = pack.weight; 
cin >> pack.sides[0] >> pack.sides[1] >> pack.sides[2]; 

    while(pack.weight > 0 || pack.sides[0] < 0 || pack.sides[1] < 0 || pack.sides[2] < 0){ 
     cout << "Enter Vaild info:"; 
     cin >> pack.weight >> pack.sides[0] >> pack.sides[1] >> pack.sides[2]; 
    } 

girth = getGirth(pack.sides); 
float price; 
price = getPackageAmount(pack.weight, weights, prices); 
cout << price << endl; 

if(pack.weight <= 50){ 
    if(pack.sides[0] <= 36 && pack.sides[1] <= 36 && pack.sides[2] <= 36){ 
     if(girth <= 60){ 
      pack.accepted = true; 
      accepted++; 
     } 
    } 
} 
else{ 
    pack.accepted = false; 
    rejected++; 

} 
} 

は、事前にありがとうございます。

+0

使用 '続ける:

あなたがelse句を追加する必要があります。 – MikeCAT

+0

'weight = pack.weight;'はおそらく 'pack.weight = weight;'でなければなりません。これはおそらくこれが機能していない理由です。 –

+0

「私はそれが欲しいのと同じように、中断しない」 - それはどういう意味ですか?あなたはすぐにそれを「中断」したいですか?もしそうなら、まだその下にあるすべてのステートメントが実行されていることがあります。この場合、あなたは@MikeCATのアドバイスに従うことができます。 –

答えて

3

while(moveOn)は、「moveOnfalseになるとすぐに停止する」という意味ではありません。このテストはループの各繰り返しの開始時にのみ実行されます。 ; `や` else`句

while (moveOn) 
{ 
    cout << "Enter info:"; 
    cin >> weight; 
    if(weight == -1){ 
     moveOn = false; 
    } 
    else 
    { 
     weight = pack.weight; 
     // ... 
    } 
} 

(。あなたはおそらくもpack.weight = weightweight = pack.weightを変更したい)

+0

したがって、基本的に残りのコードをelse文に入れてください。もし私があなたを正しく理解していないなら、私を訂正してください。 –

+0

else文が正しく機能しました。 –

+0

@MichaelCorbett (私は個人的には、「休憩」は完全にうまくいっていると思っていますが、この場合は読みやすくなります。) – molbdnilo