Array Schwierigkeiten



  • Hallo,

    ich muss ein Programm schreiben indem der Benutzer 10 Zahlen einliest und diese Zahlen im Array gespeichert werden. Die Funktion soll die größte Zahl die sich in dem Array befindet finden und die Position (Index) zurück in die Hauptfunktion geben.

    So weit bin ich:

    #include <stdio.h>
    int greatest (int aiArray[], int iLength);
    int main ()
    {
        int iMax;
        int iNum;
        int aiArray [10];
        int iCount;
        int iLength = 0;
    
        for (iCount = 0; iCount <= 10; iCount++)
        {
            printf ("Please enter a number: ");
            scanf ("%i", &iNum);
            aiArray [iCount] = iNum;
            iLength = iLength + 1;
        }
    
        greatest (aiArray, iLength);
        printf ("%i", iMax);
    
        system ("pause");
    
        return 0;
    }      
    
    int greatest (int aiArray [], int iLength)
    {
        int iMax = 0;
        int iCount;
    
        for (iCount = 1; iLength - 1; iCount++)
        {
            if (aiArray[iCount] > aiArray[iMax])
            {
                iMax = iCount;
            }
        }
        return iMax;
    }
    

    Was stimmt da nicht?



  • dreamweaver2004 schrieb:

    [cpp]
    int greatest (int aiArray [], int iLength)
    {
    int iMax = 0;
    int iCount;

    for (iCount = 1; iCount < iLength; iCount++)
    {
    if (aiArray[iCount] > aiArray[iMax])
    {
    iMax = iCount;
    }
    }
    return iMax;
    }

    [/cpp]



  • Zum oberen kommt noch was dazu:

    [cpp]for (iCount = 0; iCount <= 10; iCount++) [/cpp]

    Du zählst 11 mal, dein Array hat aber nur 10 Elemente.

    Deshalb:

    for (iCount = 0; iCount < 10; iCount++)
    


  • //"iMax = " hast du vergessen.
    iMax = greatest (aiArray, iLength);
    


  • Danke für eure Hilfe aber es funktioniert immer noch nicht richtig.
    Jetzt gibt er als Position immer 2 aus.

    #include <stdio.h>
    int greatest (int aiArray[], int iLength);
    int main ()
    {
        int iMax;
        int iNum;
        int aiArray [10];
        int iCount;
        int iLength = 0;
    
        for (iCount = 0; iCount < 10; iCount++)
        {
            printf ("Please enter a number: ");
            scanf ("%i", &iNum);
            aiArray [iCount] = iNum;
            iLength = iLength + 1;
        }
    
        greatest (aiArray, iLength);
        printf ("%i", iMax);
    
        system ("pause");
    
        return 0;
    }      
    
    int greatest (int aiArray [], int iLength)
    {
        int iMax = 0;
        int iCount;
    
        for (iCount = 1; iCount < iLength; iCount++)
        {
            if (aiArray[iCount] > aiArray[iMax])
            {
                iMax = iCount;
            }
        }
        return iMax;
    }
    


  • Herrmann schrieb:

    //"iMax = " hast du vergessen.
    iMax = greatest (aiArray, iLength);
    


  • Sorry hab den Post übersehen.

    Jetzt funktioniert es DAnke!



  • Schon wieder ein Problem 😃 .
    Es soll das Programm greatest Programm mit folgender Funktion erweitert werden:
    void sortArray (int aiArrayToSort[], int iLength);
    Diese Funktion soll mit Hilfe eines lokalen Hilfsarrays und der Funktion greatest das Array aiArrayToSort sortieren.
    Ich habe aber keine Ahnung wie das funktionieren soll. 😞

    Beispiel greatest:

    #include <stdio.h>
    int greatest (int aiArray[], int iLength);
    int main ()
    {
        int iMax;
        int iNum;
        int aiArray [10];
        int iCount;
        int iLength = 0;
    
        for (iCount = 0; iCount < 10; iCount++)
        {
            printf ("Please enter a number: ");
            scanf ("%i", &iNum);
            aiArray [iCount] = iNum;
            iLength = iLength + 1;
        }
    
        iMax = greatest (aiArray, iLength); 
        iMax = iMax + 1;
        printf ("%i", iMax);
    
        system ("pause");
    
        return 0;
    }      
    
    int greatest (int aiArray [], int iLength)
    {
        int iMax = 0;
        int iCount;
    
        for (iCount = 1; iCount < iLength; iCount++)
        {
            if (aiArray[iCount] > aiArray[iMax])
            {
                iMax = iCount;
            }
        }
        return iMax;
    }
    

    Das hab ich bis jetzt:

    #include <stdio.h>
    void sortArray (int aiArrayToSort[], int iLength);
    int greatest (int aiArray[], int iLength, int aiArrayToSort[]);
    int main ()
    {
        int iMax;
        int iNum;
        int aiArrayToSort[10];
        int aiArray [10];
        int iCount;
        int iLength = 0;
    
        for (iCount = 0; iCount < 10; iCount++)
        {
            printf ("Please enter a number: ");
            scanf ("%i", &iNum);
            aiArray [iCount] = iNum;
            iLength = iLength + 1;
        }
    
        iMax = greatest (aiArray, iLength, aiArrayToSort); 
        iMax = iMax + 1;
        printf ("%i", iMax);
        for (iCount = 0; iCount < 10; iCount++)
        {
            printf ("%i\n", aiArrayToSort[iCount]);
        }    
    
        system ("pause");
    
        return 0;
    }      
    
    int greatest (int aiArray [], int iLength, int aiArrayToSort[])
    {
        int iMax = 0;
        int iCount;
        int iCount2 = 0;
    
        for (iCount = 1; iCount < iLength; iCount++)
        {
            iCount2 = iCount2 + 1;
            if (aiArray[iCount] > aiArray[iMax])
            {
                iMax = iCount;
                aiArrayToSort[iCount2] = iCount;
            }
        }
        return iMax;
    }
    

    Bitte helft mir.
    Es ist wirklich dringend.



  • Stichwort Bubblesort



  • noch nie gehört 😞



  • Dann wirds Zeit dass du dich mit folgenden Seiten anfreundest:

    www.google.de
    www.wikipedia.de

    PS: Du musst natürlich nicht Bubblesort verwenden, es gibt sehr viele Sortieralgorithmen. Kannst dir auch was eigenes ausdenken. Aber ich denke Bubblesort wäre ein guter Anfang.



  • In C gibt es eine qsort-Funktion
    http://www.cplusplus.com/ref/cstdlib/qsort.html



  • So wie ich die Aufgabe verstehe, sollte er nicht die Funktionen aus der stdlib nehmen...

    Aber er hat ja schon eine Funktion die den größten Wert findet. Mit ein wenig Gehirnschmalz kommt man auf den Rest auch ohne google oder wikipedia. Die Laufzeit sollte bei 10 Elementen auch kein Problem darstellen 😉



  • Naja er soll ja auch nicht nach dem Code suchen, sondern sich erst mal die Vorgehensweise klar machen. Und die Vorgehensweise verschiedenster Sortieralgorithmen findet man nun mal bei Google oder Wiki 😉



  • Ich soll 2 Arrays machen. In einem Array(1) sind die Zahlen gemischt drinnen.
    Dann soll die größte Zahl vom Array(1) in Array(2) an die erste Stelle kopiert werden. Dabei soll die kopierte Zahl in Array(1) den Wert -999 erhalten um nicht nochmal geprüft zu werden. So soll das mit allen Zahlen geschehen bis die Zahlen geordnet im Array(2) sind.
    Danach sollen diese Zahlen wieder in Array(1) geordnet zurückkopiert werden.
    Diese geordneten Zahlen im Array(1) sollen dann ausgegeben werden.
    Da hilft mir google oder Wikipedia auch nichts denn ich muss den Algorithmus selbst schreiben.



  • Auf was wartest du dann noch? Ist doch alles vorgegeben von dem (wenn du mich fragst: schlechtem) Algo...



  • Das ist ja dann supereasy. Du hast den Algo in Textform, jetzt musst du ihn halt in C umsetzen.

    btw, warum gerade -999? Warum nicht INT_MIN (-2147483648)?



  • Ja aber ich kapier nicht wie ich das machen soll.
    Ich kann das im C nicht.

    @TactX: -999 deshalb weil mir INT-MIN (-2147483648) einfach zu viel Schreibarbeit ist 😃



  • Hast du dir das selber ausgedacht wie due das Array sortierst oder ist das vorgegeben?



  • vorgegeben


Anmelden zum Antworten