0

私の出力は、ポジティブまたはネガティブを繰り返し印刷します。なぜ無限ループになるのですか?私は以下を使用しました:

include iostream 
using namespace std; 

int main()
{
    int num;

    cout<<"enter number"<<endl;
    cin>>num;

    while(num!=0)
    {
        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }

    return 0;
}
4

6 に答える 6

1

あなたが持っていてwhile(num!=0)、ループ内のその値を変える可能性のあるものは何もないからです。

于 2012-11-04T20:32:12.823 に答える
0

の値はnum、ループの本体では変更されません。

于 2012-11-04T20:33:27.047 に答える
0

numwhileループの条件が偽になることはないため、ループ内の値を変更する必要があります。

于 2012-11-04T20:33:37.213 に答える
0

ループ中にも値を読み取る必要があります。そうしないと、numは変更されず、永久に同じままになるため、無限ループが発生するか、何も発生しません(num == 0の場合)

{int num;

cout<<"enter number"<<endl;
cin>>num;

while(num!=0)
{
    cout<<"enter number"<<endl;
    cin>>num;

    if(num>0)
        cout<<"positive"<<endl;
    else
        cout<<"negative"<<endl;
}
return 0; }
于 2012-11-04T20:35:05.930 に答える
0

これは、コードのロジックが原因です。最初に標準入力から数値を読み取り、次に数値が0に等しくないという条件に基づいてwhileループを作成します。したがって、標準入力を介して提供されるnumの値が0に等しくない場合、プログラムはループの本体を繰り返します。何回も何回も。

このコードでは、whileループ自体は必要ありません。numが正/負であるかどうかに基づいてユーザーにメッセージを出力したい場合は、if / else部分を残して、次のようにwhileループを取り除くことができます。

    using namespace std; 
    int main() {

    int num;

    cout<<"enter number"<<endl;
    cin>>num;

    while(num!=0)
    {
        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }

    return 0; 
}

もう1つの可能性は、ユーザーがnumを複数回入力し、次のような特定の条件でwhileループを中断する機会です。

using namespace std; 
int main() {

int num;

do {
cout<<"enter number"<<endl;
cin>>num;
   if(num>0)
        cout<<"positive"<<endl;
    else if(num < 0)
        cout<<"negative"<<endl;
} while(num!=0);

return 0; 

}

breakここで、numが0に等しい場合、ループは終了します。条件に基づいて、ステートメントを使用してループから明示的に抜け出すこともできます。

于 2012-11-04T20:44:42.163 に答える
0

madflame991の回答に基づいて、ここに改良版があります:)

include iostream 
using namespace std; 

int main()
{
    int num;

    do
    {
        cout<<"enter number"<<endl;
        cin>>num;

        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }while(num!=0);

    return 0;
}
于 2012-11-04T20:47:26.493 に答える