我正在尝试创建一个代码,其中给定一个包含 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/