Я пытаюсь вернуть индекс с наименьшим элементом в массив целых чисел. Я что-то упускаю? После ввода моих целых чисел он не возвращает индекс.Индекс возврата наименьшего элемента в массив
UPDATE: В конце 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;
}
Не должно быть n = array [0], а не наоборот? Поскольку вы хотите сохранить первое число как ваш предполагаемый наименьший элемент, сравните его. – Clark
В дополнение к тому, что сказал @Clark, также обратите внимание, что вы отбрасываете возвращаемое значение indexofSmallestElement и не отображаете его. Также обратите внимание, что ваши циклы используют '<= размер', который * неверен * - вы должны использовать' <размер'. Помните, что в C и C++ массивы начинаются с 0, поэтому, если ваш массив имеет 10 элементов, допустимые индексы равны 0, 1, 2, ..., 9. Кроме того, ваша переменная 'index' может использоваться неинициализированной. Подумайте, что произойдет, когда самый маленький элемент - это первый элемент. –
Вот ваше повреждение стека: 'for (int i = 0; i <= size; i ++)'. Для объяснения должно быть '<' –