Array Schwierigkeiten



  • 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



  • dreamweaver2004 schrieb:

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

    Das gibts schon fertig: #include <limits.h>



  • #define -999 INT_MIN
    

    Besser so? *scnr*



  • TactX schrieb:

    #define -999 INT_MIN
    

    Besser so? *scnr*

    Aha, man kann jetzt auch Zahlen umdefinieren. C wird immer besser.



  • Wo ist dein Problem?
    Du hast ja schon selber das komplette Verfahren genannt.

    Das must du doch jetzt nur noch codieren



  • Aber ich weiß nicht wie ich das codieren soll 😞



  • Schau dir doch dein eigenes Beispiel an

    1 Such in einer Schleife das größte Element
    2 speichers um
    3 markier das element im orginal array mit MININT
    4 fang wieder von vorne bei 1 an
    5 und das ganze 10 mal
    6 Kopiere das Feld zurück und fertig


Anmelden zum Antworten