c++ - 查找数组中缺失的数字

标签 c++ arrays

我正在尝试创建一个代码,其中给定一个包含 1 到 10 之间的数字的有序数组,该代码返回所有缺失的值。

我的代码如下:

int missingArray [] = {1, 3, 4, 5, 7, 8};

for (int i = 0; i < 11; i++) {
    if (missingArray[i] == i+1) {
        cout << "Continue. \n";
    }
    if (missingArray[i] != i+1) {
        cout << "The value of " << i+1 << " is missing. \n";
    }
}

我要代码返回 继续 缺少 2 的值 继续 继续 继续 缺少 6 的值 继续 继续 缺少 9 的值 缺少 10 的值

但是,在我得到第一个“缺失”元素后,它会列出所有缺失元素。有人有什么建议吗?

最佳答案

真正出了问题的是,一旦检测到缺失值,您最初的假设 - 期望值 (i+1) 在位置 i - 就变得无效了。如果您打算检测所有缺失值,则需要将数组索引与值跟踪分离。考虑以下代码:

#define NMISSWING 6
int missingArray[NMISSING] = {1, 3, 4, 5, 7, 8};

int i = 0;
for (int n=1; n<=10; n++) {
    if (i >= NMISSING) break;   // all array entries checked

    if (missingArray[i] == n) {
        cout << "Continue.  \n";
        i += 1;  // Matched i'th, move on to next
    }
    else {
        cout << "The value of " << n << " is missing.  \n";
    }
}

请注意,我只是使用“else”而不是执行两次基本相同的测试。如果有人试图教你做其他事情,请随时告诉他们,我作为一名专业程序员的观点是,这个主题让我觉得是学术迂腐,应该避免

关于c++ - 查找数组中缺失的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41336464/

相关文章:

c++ - 寻找有关报告的链接/编译时间优化的论文/研究

c++ - 为什么会出现访问冲突运行时错误?

ios - 符合协议(protocol)的 Swift 结构类型数组

c++ - 数组的特定元素

c++ - 为什么cmake不在makefile中加入库链接命令?

c++ - CreateFileA 间歇性返回错误 20、 "The system cannot find the device specified"

c++ - memcpy派生类转基类,为什么还是调用基类函数

python - NumPy array_equal 函数未按预期工作

arrays - 如何在 pl/pgsql 中获取 foreach 中的当前键?

Python 错误 : PyThreadState_Get: no current thread after compiling an extension