2016-06-22 21 views
-3

コードブロック16を使用していますが、私はこのコードが正方形を印刷していない理由を知りません。 もう1つは、このコードを改善する方法です。 イムは、まだあなたが0bを再初期化することを忘れ、あなたの時間のために 感謝そんなにネストされたwhileループで問題が発生しました

#include <iostream> 
using namespace std; 
int main() { 
    char a = 'a', d = ' '; 
    int b = 0, c = 0; 

    while (c < 5) { 
     cout << a; 
     c = c + 1; 
    } 
    cout << endl; 
    c = 0; 
    while (c < 3) { 
     cout << a; 
     while (b < 3) { 
      cout << d; 
      b = b + 1; 
     } 
     cout << a << endl; 
     c = c + 1; 
    } 
    c = 0; 
    while (c < 5) { 
     cout << a; 
     c = c + 1; 
    } 
    cout << endl; 
    return 0; 
} 
+1

'b = 0'が役立ちます。 – Yakk

+2

'b'が3に達すると、' while'ループは決して再び実行できません。このような場合には 'while'ループの代わりに' for'ループを使います。 –

+2

デバッガでステップスルーし、その間に変数を監視する –

答えて

2

私に怒ってもいけないしてください学びます。

forを使用すると読みやすくなります:

for(int c = 0; c < 3; ++c) { 
    cout << a; 
    for (int b = 0; b < 3; ++b) { 
     cout << d; 
    } 
    cout << a << endl; 
} 
+0

ありがとう、これはとても恥ずかしいです... – Renato

+0

将来的には、あなたがそれを把握できるようになるまで、必要なだけロギングを追加してください。たとえば、 'while(b <3){'の前に 'cout <<"のような行を一時的に追加することができましたが、b whileループを入力すると、b = "<< b << endl;'となります。 –

0

問題は、あなたの外側のループを通るたびに、あなたのループをbの値をリセットしていないということです。したがって、正方形の2行目(スペースのある最初の行)では、うまく動作します。しかし、3列目では、whileループに入ると、bは、そのループを通る前回のパスから3になります。

また、同時に提案を行う場合は、変数に意味のある名前を付けると、エラーがより明確になります。 bcではなく、rowcolumnという変数を使用することをおすすめします。場合によっては、変数名が少し明確になり、バグが目立ちます。

+0

私はあなたの時間を感謝します、ありがとう、私は – Renato

関連する問題