首页 > 解决方案 > 在 C++ 中搜索二维数组以查看一行/列是否与另一行/列相同

问题描述

我正在创建一个包含 2d 数组来保存游戏板的 tron 游戏已经是碰撞了

我不知道如何开始,但我写的代码是我认为可以工作的,但它只是没有搜索或返回任何东西

    board::searchForCollision(){
         found = false;
        for (board[0][0]; board[0][0] <100; board[0][0]++)
        { if (board[0][0] == board[0][0] +1){
            found= true;
        }
        else
        found = false;

        }
        return found;
    }

我写的代码是我认为可以工作的,但它只是没有搜索或返回任何东西。

标签: c++arrayssearch2d

解决方案


不幸的是,你犯了一些逻辑错误。

显然,您想检测二维数组中的某个单元格是否包含一些数据。看着你的循环:

for (board[0][0]; board[0][0] <100; board[0][0]++)

for 循环的第一部分通常初始化在“for”中使用的“running”变量。但board[0][0];什么都不做。这是一个noOp。无操作。你也可以离开它。它将编译为空。然后,在 for 循环的条件部分,您只是检查板上是否有一个特定的单元格,索引为 0,0 的单元格小于 100。您总是在查看同一个单元格 0,0。“for”语句的最后一部分也是如此。您总是将单元格 0,0 递增。

在下面的 if 中,您将比较同一个单元格 0,0 是否等于同一个单元格 0,0 + 1。这绝不是真的。它总是错误的。就像写 if (3 == 4)。这永远行不通。

此外,您在 if else 语句中对真假的处理也不起作用。

您可能想要做的是您想要迭代数组的索引。

就像是

for (size_t row = 0U; row < 100 ; ++row)
    for (size_t col = 0U; col < 100; ++col) {
        // do something with     array[row][col];  
    }
}

我无法为您提供更多帮助,因为这个问题对我来说不是很清楚。


推荐阅读