2016-11-11 10 views
-2

whileループを実行しようとしています。私は長い間試してきましたが、これを理解することはまだできません。Whileループを正しく実行できません

#include <iostream> 
#include <iomanip> 
#include <cmath> 
using namespace std; 

int main() 
{ 
char input; 
double voltage, current; 

while ((input = 'Y')) 
{ 
    cout << "Enter the voltage: "; 
    cin >> voltage; 
    cout << "Enter the current: "; 
    cin >> current; 

    cout << "The resistance is " << voltage/current << endl; 

    cout << "Do you wish to continue? [Y/N]"; 
    cin >> input; 
} 
} 

'Y'以外の変数を入力すると、コードがループします。 // while((input == 'Y'))は私に出力を与えません

+1

'while((input == 'Y'))'を試してください。 – songyuanyao

+1

あなたがそれをしている間、おそらくエーテル以外のものに 'input'を初期化します。今は、理論上、あなたの課題の入力ミスを修正した後にループが実際に入力される確率は1/256です。良いオッズ。 – WhozCraig

+2

私は推測してみましょう:コンパイラは 'while(input = y)'は恐らく、あなたが括弧の第2のセットを追加することによって警告を抑制するために選択した問題を訂正したいと思うものではないという警告を出しました。 – MikeMB

答えて

1

最初にあなたがループに入る時間は、inputに値がありません。これは、その宣言

int main() 
{ 
char input = 'Y'; 
double voltage, current; 

while (input == 'Y') 
{ 

あなたはその後、まだユーザーは、ループの最後で'y'代わりの'Y'を入力してください可能性がある問題を抱えている中で、それを初期値を与えることによって固定することができます。私たちはそれを学生のための練習として残します。

+2

皮肉なことに、while条件の代入の前後にあるダブルパランは、OPが知っていたか、コンパイラが警告を出していることを示唆しています。おそらく、何かが間違っていた最初の手がかりだったはずです。 – WhozCraig

+0

また、 'do {} while()'ループを使用してください。このループは、ループが常に少なくとも1回は実行されることを通知します。 –

関連する問題