Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 第二个最小整数的输出不正确_C++_Arrays_Visual Studio_Loops_Integer - Fatal编程技术网

C++ 第二个最小整数的输出不正确

C++ 第二个最小整数的输出不正确,c++,arrays,visual-studio,loops,integer,C++,Arrays,Visual Studio,Loops,Integer,在数组中查找第二小整数时遇到问题。数组是未排序的(这是data.txt文件中的内容),因此我知道这可能是问题的一部分,我不确定如何以最简单的方式修复此问题。之后,我必须从数组中删除该整数,移动每个数字,然后重新打印数组,如果有人能帮忙的话,我将非常感激 const NUM = 10; int Array[NUM]; ifstream infile; infile.open("Data.txt"); for (int i = 0; i < NUM; i++) { infile

在数组中查找第二小整数时遇到问题。数组是未排序的(这是data.txt文件中的内容),因此我知道这可能是问题的一部分,我不确定如何以最简单的方式修复此问题。之后,我必须从数组中删除该整数,移动每个数字,然后重新打印数组,如果有人能帮忙的话,我将非常感激

const NUM = 10;

int Array[NUM];

ifstream infile;
infile.open("Data.txt");

for (int i = 0; i < NUM; i++)
{
    infile >> Array[i];
    cout << Array[i] << endl;
}

int Min = Array[0];
int Next = 0, SecondMin = 0;

for (int k = 0; k < NUM; k++)
{
    if (Min > Array[k])
        Min = Array[k];
}

for (int m = 2; m < NUM; m++)
{
    Next = Array[m];
    if (Next > Min)
    {
        SecondMin = Min;
        Min = Next;
    }
    else if (Next < SecondMin)
    {
        SecondMin = Next;
    }
}

cout << "The second smallest integer is: " << SecondMin << endl;
const NUM=10;
int数组[NUM];
河流充填;
infle.open(“Data.txt”);
for(int i=0;i>阵列[i];
库特(分钟)
{
第二分钟=分钟;
Min=下一个;
}
否则如果(下一次<第二分钟)
{
SecondMin=Next;
}
}

cout不必在数组上循环两次就可以找到第二个最小的数。只要跟踪最小的和第二小的,就应该能够通过一个循环找到它们

此代码还有几个其他问题:

如果(!infle.eof())

您不需要检查循环中的if(i<由于循环上的约束,代码>i将始终小于
NUM

如果由于某种原因,文件中的项目数小于
NUM
,则数组中的其余项目将具有未定义的值。例如,如果文件中只有九个项目,在读取该文件后,
Array[9]
将具有创建数组时内存中该位置的值。这可能会导致算法出现问题


我假设这是一个家庭作业问题,这就是为什么需要使用数组。但请记住,在这种情况下,您可能需要使用std::vector。这样,您就可以一直从文件中读取数字并将其添加到向量中,直到到达末尾,而不是有固定数量的输入,向量中的所有值都将是有效的。

这部分没有引起问题,所有内容都正确地读取到数组中,我只是不允许额外的数字超过中的NUM值。数组中只能有10个数字。所以我可以删除.eof部分,只保留infle>>数组[I]。没有那条线就行了。