为什么这种代码顺序不能正常工作?
Why doesn't this order of code work properly?
我已经连续几个小时在做这个程序的一部分。我有几行代码已经困扰了我一个多小时了。这根本说不通。我一遍又一遍地读着台词,在脑子里想它应该怎么做,但它就是不做!这可能是我一直忽视的一些愚蠢的错误(通常发生在我身上…),也可能是由于睡眠不足/过去几个小时一直在做这件事。
程序很长,但我遇到问题的代码块只有几行-所以我只在需要时发布整个程序。
好的,这里是一个快速运行的应该做的事情:
我有一个单一的向量,填充了手动设置的字符串(19个,每个字符串长79个字符)。这个一维向量将被视为二维向量——因为我试图保持它的基本性质。这个字符串向量,如果每行显示1个字符串,本质上创建了一个矩形网格。'和连接矩形部分的'#'路径。它应该得到一个x和y坐标,传递给函数。它像一个二维矢量一样循环并找到位置。它检查该位置的字符是否为NOT '。'或'#',否则它将字符更改为X以标记其位置。我设置了一个有效的x,y坐标,这是a '的位置。' -问题就在i cout ' match found::: '当程序运行时,它显示vLevel[i][j] = '的值。'但由于某种原因,它没有转到else语句那里函数被调用了4次,我输入了cout语句。这是网格的样子。白色的空间就是空间。每一行都是vector中的一个字符串:
.......
....... .......
.......##....... ..........................
....... ....... ..........................
....... .......................... ..........
....... ..........................#####..........
.......................... ..........
.......................... #
.......................... #
# #
# #
........ # ............ .......
........ # ............ .......
........ # ............ .... .......
........###############............ .... .......
........ ............####....
........ ............ ....
下面是我要处理的代码:
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);
}
}
}
}
}
空格在粘贴时弄乱了,所以我试着清理一下。我不明白为什么会跳过其他部分。就像我说的,这件事解决后我肯定会觉得自己很蠢。我需要睡觉,哈哈。
如果你需要更多的信息,请告诉我。提前感谢!看:
if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#'))
这将总是求值为true
。想想看。
(我想你是指if((!=)&&(!=))
还是if(!((==)||(==)))
)
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 为什么STD ::计数将常数传递给Lambda,而不是在弦上工作时而不是字符
- sdl软件渲染器不工作,工作在硬件加速的一个
- C++程序已停止工作-求解常微分方程