所以我一直在这个程序的一部分工作了几个小时。我有几行代码已经让我困惑了一个多小时。这只是没有意义。我一遍又一遍地读出这些句子,并在脑海中思考它应该做什么,但它并没有这样做!这可能是我忽略的一个愚蠢的错误(通常发生在我身上),或者它可能是由于睡眠不足/过去几个小时不断对它进行工作。为什么代码的顺序无法正常工作?
该程序相当长,但我遇到的代码块只有几行 - 所以我只会发布整个东西,如果需要的话。
好了,所以这里是一个快速运行的这是什么应该做下来:
我有一个载体,充满了与手动设置字符串(19,各为79个字符)。这个1维矢量将被视为2d矢量 - 因为我试图保持它的基本。所以这个字符串向量,如果每行显示1个字符串,本质上会创建一个带有矩形部分'。'的网格。和连接矩形部分的'#'的路径。它应该得到一个x和y坐标,并传递给该函数。它像二维矢量一样循环并找到位置。它检查该位置的char是否不是'。'或'#',否则它会将字符更改为X以标记其位置。我使用一个有效的x,y坐标来设置测试,该坐标是'。'的位置。 - 问题是在我的cout“match found :::”行后面,当程序运行时,它显示vLevel [i] [j] ='。'的值。但出于某种原因,它不会去else函数被调用4次以上,我把cout语句。下面是网格的样子。白色空间是空间..每一行是向量的字符串:
.......
....... .......
.......##....... ..........................
....... ....... ..........................
....... .......................... ..........
....... ..........................#####..........
.......................... ..........
.......................... #
.......................... #
# #
# #
........ # ............ .......
........ # ............ .......
........ # ............ .... .......
........###############............ .... .......
........ ............####....
........ ............ ....
继承人的代码段我处理:
void markPosition(vector<string> & vLevel, int x, int y){
cout << "x: " << x <<endl;
cout << "y: " << y <<endl;
bool doubleCheck = true; //extra bool I added for testing purposes
for(int i = 0; i < vLevel.size(); i++){
for(int j = 0; j < vLevel[i].size(); j++){
//displays if x and/or y are out of range
if (doubleCheck){
if ((x < 0) || (x > vLevel[i].size())){
cout << "X is out of range!" << endl;
doubleCheck = false;
}
if ((y < 0) || (y > vLevel.size())){
cout << "Y is out of range!" << endl;
doubleCheck = false;
}
}
else {
return;
}
if ((j == x) && (i == y)){
//////THIS IS THE PROBLEM LOL
cout << "match found::: " << vLevel[i][j] << endl;
if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#')){
cout << "Located in the blankness" << endl;
return;
}
else {
cout << "I don't get reached!!??" << endl;
vLevel[i][j] = 'X';
markPosition(vLevel,i-1,j);
markPosition(vLevel,i+1,j);
markPosition(vLevel,i,j+1);
markPosition(vLevel,i,j-1);
}
}
}
}
}
的间距得到了粘贴时会搞砸,所以我试着把它清理一下。我不明白为什么它跳过别的。就像我说的,一旦这个问题得到解决,我相信我会觉得哑巴。我需要睡觉哈哈。
让我知道你是否需要更多信息。先谢谢了!
谁遗忘的德·摩根定律另一个程序员。 :) – Barmar 2013-03-07 03:05:24
该死的太慢了。在我的手机上阅读它,但必须登录到计算机才能正确剪切和粘贴。 +1为你快速先生。 – 2013-03-07 03:08:37
我不明白大声笑 – ModdedLife 2013-03-07 03:09:25