1

簡単なマップ プロット プログラムをコーディングしましたが、特定できないエラーがいくつかあります。

  1. このバグは X 座標が正の場合にのみ発生し、負の値の場合は問題ありません。
  2. 範囲が 11 しかないのに、ドットの最後の列が出力されるのはなぜですか?

コードは次のとおりです。

int xRange = 11;
int yRange = 11;
string _space = "   ";
string _star = " * ";

for( int x = xRange; x > 0; x-- )
{
    for( int y = 0; y < yRange; y++ )
    {
        int currentX = x - 6;
        int currentY = y - 5;

        //demo input
        int testX = 2; //<----------ERROR for +ve int, correct for -ve
        int testY = -4; //<-------- Y is working ok for +ve and -ve int

        //Print x-axis
        if( currentY == 0 )
        {
            if( currentX < 0 )
                cout << currentX << " ";
            else
                cout << " " << currentX << " ";
        }
        //Print y-axis
        if( currentX == 0 )
        {
            if( currentY < 0 )
                cout << currentY << " ";
            else
                //0 printed in x axis already
                if( currentY != 0 )
                    cout << " " << currentY << " ";
        }
        else if( currentY == testX and currentX == testY )
            cout << _star;
        else
            cout << " . ";
    }
    //print new line every completed row print
    cout << endl;
}

デモ入力の出力 (x: 2, y: -4): ( x が 3 に表示されていますが、これは間違っています)

 .  .  .  .  .  5  .  .  .  .  .  . 
 .  .  .  .  .  4  .  .  .  .  .  . 
 .  .  .  .  .  3  .  .  .  .  .  . 
 .  .  .  .  .  2  .  .  .  .  .  . 
 .  .  .  .  .  1  .  .  .  .  .  . 
-5 -4 -3 -2 -1  0  1  2  3  4  5 
 .  .  .  .  . -1  .  .  .  .  .  . 
 .  .  .  .  . -2  .  .  .  .  .  . 
 .  .  .  .  . -3  .  .  .  .  .  . 
 .  .  .  .  . -4  .  .  *  .  .  . 
 .  .  .  .  . -5  .  .  .  .  .  .

デモ入力の出力 (x: -2、y: 4):

 .  .  .  .  .  5  .  .  .  .  .  . 
 .  .  .  *  .  4  .  .  .  .  .  . 
 .  .  .  .  .  3  .  .  .  .  .  . 
 .  .  .  .  .  2  .  .  .  .  .  . 
 .  .  .  .  .  1  .  .  .  .  .  . 
-5 -4 -3 -2 -1  0  1  2  3  4  5 
 .  .  .  .  . -1  .  .  .  .  .  . 
 .  .  .  .  . -2  .  .  .  .  .  . 
 .  .  .  .  . -3  .  .  .  .  .  . 
 .  .  .  .  . -4  .  .  .  .  .  . 
 .  .  .  .  . -5  .  .  .  .  .  .

私のコードで2つの問題を特定するのを手伝ってくれる人はいますか? ありがとう。

4

2 に答える 2

2

if( currentY == testX and currentX == testY )

それは正しくありません。X と X、Y と Y を比較するべきではありませんか?

よく見ると、すべてがさらに奇妙です。外側のループで行が生成されますが、x. 内部ループは各行の列を生成し、それを でインデックス付けしyます。どの軸が X 軸でどちらが Y 軸であるかについて、一般的な混乱があります。

編集:ああ、私は今問題を見ます。の場合currentY == 0は、軸の数字を印刷し、ドットも印刷します。

于 2013-10-13T16:27:05.277 に答える
1

else問題は、Y 軸を印刷するときにまだドットを印刷するため、y 軸の右側にあるすべてが 1 だけシフトされることです。そこに別のドットがあるはずです。

if( currentY == 0 )
{
    ....
}
else if (currentX == 0)  // <--- add an else there
{
    ....
}
else if ...
于 2013-10-13T16:36:47.640 に答える