2016-03-20 65 views
-5

以下のような簡単なプログラムを作成しました。そのプログラムはリスト内にある場合は2倍に、入力された番号がリストにない場合は終了するように設計されています。C++プログラムが終了しない

#include <iostream> 
#include <array> 
using namespace std; 
int main() 
{ 
cout << "First we will make a list" << endl; 

array <int, 5>list; 
int x, number; 
bool isinlist = true; 

cout << "Enter list of 5 numbers." << endl; 

for (x = 0; x <= 4; x++) 
{ 
    cin >> list[x]; 
} 
while (isinlist = true) 
{ 
    cout << "now enter a number on the list to double" << endl; 
    cin >> number; 

    for (x = 0; x <= 4; x++) 
    { 
     if (number == list[x]) 
     { 
      cout << "The number is in the list. Double " << number << " is " << number * 2 << endl; 
     } 
     else 
      isinlist = false; 
    } 
} 
return 0; 
} 

ただし、リストにない番号が入力された場合にプログラムが実行されているときは、プログラムはループし続けます。これをどうやって止めることができますか?

+0

デバッガを使用してください。あなたの問題はどこですか?また、質問を改善するために、[最小限で完全で検証可能なサンプルを作成する方法](http://stackoverflow.com/help/mcve)をご覧ください。ようこそ! –

+0

実行時に問題が発生します。ユーザーが入力した番号がリストにない場合、プログラムは終了する必要がありますが、while(isinlist = true)がfalseであるとみなされてもプログラムは続行します。 isinlist = false; –

+1

全く同じ質問が(少なくとも)異なる人々によって2回質問されるのはなぜですか? http://stackoverflow.com/questions/36111096/need-help-to-stop-program-terminating-without-users-consent –

答えて

0

割り当てがisinlist = trueの条件は、常にtrueと評価されます。

条件として有害な割り当てなしでisinlistを使用する必要があります。

+0

私は混乱しています。「while(isinlist = true)」のループ内では、数字がリストにない場合は "isinlist = false"なので、 "while(isinlist = true)"にループバックするとき、コンパイラはそれが真ではないのでループをスキップする必要があります。 –

+2

@MynameisJeff 'while(isinlist == true)'、あるいは 'while(isinlist)'を簡略化したほうがいいです。 –

+0

これは大変ありがとうございます。 –

1

isinlist = trueは、whileループの条件ではありません。あなたはisinlist == trueが欲しいです。 isinlistはブール値なので、== trueの部分[boolean zen]を省略することもできます。

0

このようにすることもできます。ブール変数を削除します(不要)。

while(true) 
{ 
    cout << "now enter a number on the list to double" << endl; 
    cin >> number; 

    for (x = 0; x <= 4; x++) 
    { 
     if (number == list[x]) 
     { 
      cout << "The number is in the list. Double " << number << " is "   << number * 2 << endl; 
     } 
     else 
      break; 
    } 
} 
関連する問題