返回数组中最小元素的索引

gos*_*tag 6 c++ arrays indexing

我试图用整数数组中的最小元素返回索引.我错过了什么吗?在我将整数放入后,它不会返回索引.

更新:int main()关于数据堆栈被破坏,我得到一个错误.谢谢.我的代码如下:

#include <iostream>
#include <conio.h>

using namespace std;

int indexofSmallestElement(double array[], int size);

int main()
{    
int size = 10; 
double array[10];

for (int i = 0; i <= size; i++)
{
    cout << "Enter an integer: " << endl;
    cin >> array[i];
}

indexofSmallestElement(array, size);
}

int indexofSmallestElement(double array[], int size)
{
int index = 0;

if (size != 1)
{

    int n = array[0];
    for (int i = 1; i < size; i++)
    {
        if (array[i] < n)
        {
            n = array[i];
            index = i;
        }
    }
}
return index;
}
Run Code Online (Sandbox Code Playgroud)

Nik*_*lis 14

很多人都向你展示了他们的变种indexofSmallestElement.我将包括我的解释为什么我认为它更好:

int indexofSmallestElement(double array[], int size)
{
    int index = 0;

    for(int i = 1; i < size; i++)
    {
        if(array[i] < array[index])
            index = i;              
    }

    return index;
}
Run Code Online (Sandbox Code Playgroud)

您会注意到我取消了n您用来保存到目前为止遇到的最小值的变量.我这样做是因为,根据我的经验,必须保持两个不同的事物同步可能是微妙的错误的来源.即使是在这个简单的情况下,它也是多个错误的根源,其中最重要的是你n被声明了,int但你在其中分配了类型的值double.

底线:取消n变量,只记录一件事:索引.


小智 0

在循环内部使用 array[i] 和 index = i。大小是边界:)