Das finden der kleinsten Zahl in einem array von ganzen zahlen

Ich geschrieben habe, ein kleines Programm, das dauert nur 5 zahlen vom Benutzer und speichert Sie
in einem array von ganzen zahlen. Das array wird an eine Funktion übergeben. Die Funktion wird verwendet, um zu finden, die kleinste Zahl im array und drucken Sie es aus. Sincerly die Ausgabe ist nicht korrekt und ich weiß nicht, warum. Die Funktion immer gibt das erste element des array zurück, das sollte die kleinste Zahl, aber es ist nicht.

#include <stdio.h>

void smallestint (int intarray [], int n)

{
    int i;
    int temp1 = 0;
    int temp2 = 0;

    for(i = 0; i < n; i ++)
    {

        if (intarray [i] < temp1)
        {
            intarray [i-1] = intarray [i];
            temp2 = intarray[i];
            intarray[i] = temp1;
            temp1 = temp2;
        }
        else 
            temp1 = intarray[i];
    }

    printf("%d\n", intarray[0]);
}

int main ()

{
    const int n = 5;
    int temp = 0;
    int i;
    int intarray [n];

    printf("Please type in your numbers!\n");

    for(i = 0; i < n; i ++)
    {
        printf("");
            scanf("%d", &temp);         
        intarray[i] = temp;

    }

    smallestint (intarray, n);


    getchar();
    getchar();
    return 0;
}

Ich habe aktualisiert mein code. Jetzt bin ich die Initialisierung der temp. - Werte vor der for-Schleife. Aber es ist immer noch nicht funktioniert.

Gibt es einen Grund, warum Sie machte die Dinge komplizierter als Sie sein müssen, D. H. das mischen der Inhalte des Arrays um? Auch wenn die Verwendung von null als Initialisierer klingt nicht wie eine sehr gute Idee. Siehe limits.h.
Ich bin verwirrt von Ihrem Algorithmus. Vergleichen Sie einfach jede Zahl gegenüber dem Vorjahr ein, die Speicherung der kleinere Wert. Verwenden INT_MAX als die ersten kleinsten Wert. Und don ' T schieben Sie die array!
Oder verwenden Sie intarray[0] als Anfangswert (aber stellen Sie sicher, dass (n > 0) ersten).

InformationsquelleAutor Ordo | 2011-01-17

Schreibe einen Kommentar