我编写了一个简单的地图绘图程序,但有一些我无法识别的错误。
以下是代码:
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 . . . . . .
任何人都可以帮助识别我的代码中的两个问题吗?感谢。
答案 0 :(得分:2)
if( currentY == testX and currentX == testY )
这看起来不对。你不应该把X比作X和Y比Y吗?
仔细观察,这一切都更加陌生。您的外部循环生成行,但您使用x
对其进行索引。 Inner循环为每一行生成列,并使用y
对其进行索引。关于哪个轴是X轴而哪个轴是Y轴,一般会产生混淆。
编辑:啊,我现在看到了问题。当currentY == 0
时,您打印轴的数字,也打印点。
答案 1 :(得分:1)
问题在于,当您打印Y轴时,仍然会打印一个点,因此y轴右侧的所有内容都会移动1.您应该在那里有另一个else
:
if( currentY == 0 )
{
....
}
else if (currentX == 0) // <--- add an else there
{
....
}
else if ...