De retour de l'indice du plus petit élément dans le tableau

Je suis en train de retourner l'indice du plus petit élément dans un tableau d'entiers. Ai-je raté quelque chose? Après j'ai mis mon entiers, il ne renvoie pas l'index.

Mise à JOUR: j'obtiens une erreur à la fin de int main() sur le tableau de la pile étant endommagé. Je vous remercie. Mon code est comme suit:

#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;
}
  • Ne devrait-elle pas être n = tableau[0], pas l'inverse? Puisque vous voulez enregistrer le premier numéro de votre supposé plus petit élément, puis de comparer à partir de là.
  • En plus de ce que @Clark a dit, notez également que vous jetez la valeur de retour de indexofSmallestElement et ne pas l'afficher. Notez également que vos boucles d'utilisation <= size ce qui est incorrect, vous devez utiliser les < size. Rappelez-vous, en C et C++ tableaux de repartir de 0, donc si votre tableau contient 10 éléments, les indices sont valides 0, 1, 2, ..., 9. En outre, votre index variable peut être utilisée non initialisée. Pensez à ce qui arrive quand le plus petit élément est le premier élément.
  • Ici est votre corruption de la pile: for (int i = 0; i <= size; i++). Devrait être <
InformationsquelleAutor gosutag | 2012-11-26