2016-10-08 14 views
-3

私は以下のステートメントを作成しようとしています。 年齢が20歳以上50歳未満の場合は、続行します。 年齢が20未満で50より大きい場合、エラーが再開します。 それ以外の場合は、エラー、再起動します。ステートメントが他のステートメントにスキップする場合else else

しかし、なんらかの理由で、else if条件のすぐ上をスキップし、そのままelseに進みます。年齢が「19」を入力すると「エラー」が出力され、年齢が51を入力すると「エラー」が出力されます。どうしたの?

#include "stdafx.h" 
#include <iostream> 
#include <string> 
using namespace std; 


int plyAgeCreate() { 

    int plyAge = 0; 

    cout << "Enter an age" << endl; 
    cin >> plyAge; 

    //If age is greator than 20 and less than 50, accept. 
    //Else if age is less than 20 but greator than 50, decline. 
    //else, error. Restart. 

    if (plyAge >= 20 && plyAge <= 50) { 
     cout << "Welcome!" << endl; 
    } 
    else if (plyAge < 20 && plyAge > 50) { //Why is this being skipped? 
     cout << "Between 20 and 50" << endl; 
     return plyAgeCreate(); 
    } 
    else { 
     cout << "Error" << endl; 
     return plyAgeCreate(); 
    } 



} 


int main() 
{ 

    plyAgeCreate(); 

    system("pause"); 
    return 0; 
} 
+0

このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低でも、あなたはあなたが行った観察と一緒に、[編集]あなたの質問あなたの問題を再現[、最小完全、かつ検証](http://stackoverflow.com/help/mcve)の例を含むようにする必要があります\しますデバッガ。 –

+1

'if(plyAge <20 && plyAge> 50)'があります。同時に20 **未満と** 50以上の数字は何ですか? –

+0

私はそれが分かりました、私はちょうど何かを把握しようとしています。他の人の意見を聞き、例を見るのが本当に助けになります。このコードは、私が読んだことについての感情を経験し、経験を通して学ぶことを試みているだけのものではありません。私はあなたのリンクをチェックアウトします、私はまだデバッグについて考え始めていない、助けてください! @ PM77-1ああ私の神 – Tseronaught

答えて

1
する必要があります

を使用するか、しない。それは何とか数が20未満で50以上の場合はそこにしか入りませんが、これは不可能です。それが19の場合は51に変更する必要があります。変更するか、削除してください。

else if (plyAge < 20 || plyAge > 50) { //Why is this being skipped? 
+0

ありがとう、私はいくつかの時間のための2つの違いを経験していた、それを体験し、アクションでそれらを見て本当に私のためにそれを並べ替えていた。それは有り難いです。 – Tseronaught

1

間違ったロジック:他

(plyAge & plyAge> 50)であれば、この条件が真であることはできません//

else if (plyAge < 20 || plyAge > 50) 
+0

男、そう簡単です。このようなことに新しいことは間違いなく冒険です。 – Tseronaught

1

これを試してください。

#include "stdafx.h" 
#include <iostream> 
#include <string> 
using namespace std; 


int plyAgeCreate() { 

    int plyAge = 0; 

    cout << "Enter an age" << endl; 
    cin >> plyAge; 

    //If age is greator than 20 and less than 50, accept. 
    //Else if age is less than 20 but greator than 50, decline. 
    //else, error. Restart. 

    if (plyAge >= 20 && plyAge <= 50) { 
     // This means Age is Between 20 and 50 
    } 
    else { 
     //This means age is below 20 OR above 50 
    }  
    // There cannot another case. Either between 20 - 50 or not between 20 - 50 
} 


int main() 
{ 

    plyAgeCreate(); 

    system("pause"); 
    return 0; 
}