Bitte um Hilfe!! (Programmcode fehlt)



  • Hallo Leute!
    Ich bin neu hier und total verzweifelt! 😕
    Soll nächste Woche fürs Studium ein Programm abgeben, indem noch die Funktion "quicksort" zu ergänzen ist. Bin leider aber keine Leuchte in C und hab nicht die geringste Ahnung wie ich das angehen soll. 😞
    ... hab natürlich schon alle verfügbaren Codes rausgesucht, ist aber keiner für mich verwendbar!

    Vielleicht erbarmt sich ja jemand von euch! 😉

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <unistd.h>
    
    #define MAX_LINE_LEN 	1024
    #define MAX_LINES 		1024
    
    #define ERROR_ARRAY_MEM 	1
    #define ERROR_LINE_TOO_LONG 2
    #define ERROR_LINE_MEM 	3
    #define ERROR_LINE_COUNT 	4
    
    static int debug = 1;
    
    typedef int (*CMPPTR)(void *, void *);
    
    void quicksort(void *a[], int l, int r, CMPPTR cmp)
    {
       if (debug) fprintf(stderr, "DEBUG: quicksort(a, %d, %d)\n", l, r);
       [b]/* hier soll ergänzt werden! */[/b]
    }
    

    Folgende Funktionen sind schon vorhanden:

    int strCmp(void *a, void *b);
    int intCmp(void *a, void *b);
    int readLines(void ***a, int maxLines, int maxLineLen);
    void writeLines(void **a, int n);
    int main(int argc, char *argv[])
    

    Ich wäre euch jedenfalls SEHR dankbar!!!
    Grüße!



  • Hier werden keine Hausaufgaben gemacht!

    Versuch es selbst zu implementieren oder deine Probleme zu formulieren (das ist der erste Schritt zu einer Lösung)...



  • Verwende einfach google! c quicksort.
    Erstes Ergebnis.



  • void quicksort(void *a[], int l, int r, CMPPTR cmp)
    {
       if (debug) fprintf(stderr, "DEBUG: quicksort(a, %d, %d)\n", l, r);
       qsort(a, l, r, (int (*)(const void *, const void *))cmp);
    }
    

    *scnr* 🤡



  • Ich glaub nicht, dass das der Sinn seiner Hausaufgabe sein soll ^^



  • Eigentlich hatte ich mir nur ein paar Denkanstöße erwartet, und nicht dass mir jemand den Code schreibt!
    ... bin nämlich etwas überfordert mit diensen Implementierungen z.B:

    typedef int (*CMPPTR)(void *, void *);
    
    int strCmp(void *a, void *b);
    int intCmp(void *a, void *b);
    

    Hab natürlich schon selbst probiert, bin aber kläglich gescheitert!!! 😞
    ➡ "int strcmp(void *a, void *b)" ist soweit ich rausgefunden hab eine Funktion von <string.h>, was aber ist mit "intcmp"?
    ➡ "*CMPPTR" ist ein Synonym für diese beiden Funktionen!?
    ➡ "void qsort(void *base, ....) gibt's in der <stdlib.h>
    Nur, die Umsetzung derselben scheint mir nicht so einfach zu sein!

    ... sind im Unterricht nicht so weit gekommen!



  • Lissi schrieb:

    ...
    Hab natürlich schon selbst probiert, bin aber kläglich gescheitert!!!...

    dann lass doch mal sehen, was Du schon selbst zusammengebracht hast, dann kann man Dir hier auch helfen.
    Was bedeutet strcmp() ? mal ein Tipp "cmp" könnte für "compare" stehen und "str" für ... ?
    Wofür "int" steht, wirst Du selbst herausbekommen und dann sollte ach intcmp nicht mehr allzu schwer sein. 😃

    Skizzier doch einfach mal, wie Du das Sortieren umsetzen willst.... wenn Du sagst "das hatten wir im Unterricht noch nicht", fallen mir spontan 3 Alternativen ein:

    • Du hast im Unterricht nicht aufgepasst => Lies Dir nochmal die Aufzeichnungen durch oder such im INet nach passenden Algorithmen.
    • Der Lehrer hat's verpennt => Versuche Dein Bestes und knall es dem Lehrer vor den Latz: Er ist schlecht !
    • Der Lehrer wollte Euch absichtlich was zum Knobeln geben => Dann kommst Du besser nicht mit einer Cpoy&Paste-Lösung aus dem INet an, sondern zeigst halt, was Du wirklich kannst.

    Gruß,

    Simon2.


Anmelden zum Antworten