2017-10-23 11 views
0

いくつかの数字をチェックする簡単なプログラムを書こうとしました。それは仕事を断るだけです。以下のコードサンプル:forループのC++で間違ったイテレータが初期化される

#include <iostream> 
using namespace std; 

void checknumber(int i) 
{ 
if(i>9) 
{ 
    if(i%2==0) {cout<<"even"<<endl;} 
    else {cout<< "odd" << endl;} 
} 
else 
{ 
    switch(i) 
    { 
     case 1: 
      cout<<"one"<<endl; 
      break; 
     case 2: 
      cout<<"two"<<endl; 
      break; 
     case 3: 
      cout<<"three"<<endl; 
      break; 
     case 4: 
      cout<<"four"<<endl; 
      break; 
     case 5: 
      cout<<"five"<<endl; 
      break; 
     case 6: 
      cout<< "six"<<endl; 
      break; 
     case 7: 
      cout<<"seven"<<endl; 
      break; 
     case 8: 
      cout<<"eight"<<endl; 
      break; 
     case 9: 
      cout<<"nine"<<endl; 
      break; 
     default: 
      break; 

    } 
    } 
} 


int main() { 

int a,b; 
cin >> a >> b; 
for (int i=a; i==b; i++) 
{ 
    checknumber(i); 
} 

return 0; 
} 

機能は正常です。しかし、メインプログラムは私が期待どおりに動作することを拒否します。

入力:3 10、出力:なし。私はそれをデバッグし、私は-27k周りの非常に負の数に初期化しなければならないことがわかりました。

+1

'for(int i = a; i == b; i ++)'、 'a == b'のときだけループを実行しますか? –

+0

'for(int i = a; i == b; i ++)' - OK。初心者のためのC++の本は、このように書かれた 'for'ループを示していますか?どちらかがあなたの発明であるか、 'for 'ループの章と中間条件の意味をもう一度読む必要があります。 – PaulMcKenzie

答えて

4

ループの条件部分が正しくありません。試してみてください:

for (int i=a; i<=b; i++) 
       ^^^^ 

私が正しく問題を理解していれば、あなたが(for (int i=a; i==b; i++)条件i==bは一度だけチェックされますので、ループはどこ第一の条件で解除されますあなたのケースでは10

に3から、それを実行したいです3 == 10)はです。 3〜10の例では、最初の状態で中断します。

+0

こんにちは...一度動作すれば、出力が正しくなるはずですか? – hacaoideas

1

私はそれをデバッグし、私は 'a'の代わりに非常に大きな負の数に初期化されることがわかります。

正しくデバッグしていない可能性があります。いずれにしても、このループは

for (int i=a; i==b; i++) 

となり、そうでない場合は0回だけ実行されます。あなたはおそらくしたい:

for (int i=a; i!=b; i++) 
+0

こんにちは、私は上記の両方の答えを試しました。まだ動作していません。私は-272631984 – hacaoideas

+0

ありがとう!に初期化されています! @ロシア人を雇った。 – hacaoideas

0
for (int i = a; i == b; i++) 
{ 
    checknumber(i); 
} 

あなたはこのように、この問題を解決することはできません。 Do

問題が正しく解決します。

関連する問題