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):(它在 3 处显示 x,这是错误的)

 .  .  .  .  .  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  .  .  .  .  .  .

任何人都可以帮助确定我的代码中的两个问题吗?谢谢。

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

问题是,当您打印 Y 轴时,您仍然打印一个点,因此 y 轴右侧的所有内容都移动了 1。您应该else在其中有另一个:

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