【问题标题】:How to determine if an element in a multidimensional array is empty如何判断多维数组中的元素是否为空
【发布时间】:2014-09-25 03:55:08
【问题描述】:

我正在研究一个使用大小为 n*n 的动态矩阵的幻方问题。它用数字 1-n^2 填充矩阵,并且每行、列和对角线的总和必须相同。该算法的条件之一是检查矩阵中的元素在其中一个循环期间是否已经有一个数字输入。我在检查矩阵中的一个元素是否已经输入了一个数字时遇到问题,所以我想知道如何检查一个元素是否为空。

这是我的那部分算法的代码:

else if(matrix[row][col] != 0)
    {
        row = row + 2;
        col--;
    }

由于某种原因,它会在包含循环的第 5 次迭代中触发此 if 语句。我已经使用幻方算法在纸上解决了这个问题,循环的第 5 次迭代将它带到矩阵中的一个空元素。我认为如果一个元素为空,它的值为 0?我很感激任何帮助,因为我很困惑。谢谢。

【问题讨论】:

    标签: c++ arrays matrix multidimensional-array


    【解决方案1】:

    默认情况下,C 和 C++ 中的数组不为空。您需要将元素显式设置为 0 或以将它们初始化为 0 的方式创建数组。

    您面临的是未定义的行为。未初始化的数组有一些随机(读取垃圾)值,访问这些值会导致未定义的行为。

    在全局范围内或使用static 限定符创建的数组将被初始化为0,或者您可以使用initialization provided built in by the language,或者您可以将每个元素显式设置为0
    有多种方法可以做到这一点,最好的一种取决于您要从数组中提取什么行为。

    【讨论】:

    • 好的,谢谢,这是有道理的。我将每个元素设置为 0,但由于某种原因,该循环仍在被触发。我在将每个元素设置为 0 后打印了矩阵,并且打印正确,所以我不确定为什么它仍然无法正常工作。
    猜你喜欢
    • 2013-09-27
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多