qsort externerlinkerfehler???



  • HI leute
    naja ich raffs halt noch net so ganz was man bei qsortt alles mit beben muss
    naja vielleicht ligt das problem auch wo anders
    hab nun die ganze seit rumgewurschtet so das keine fehler mehr angezeigt werden
    ausser linker fehler

    währe toll wenn sichs mal einer an sieht was ich so alles verpatz hab
    viel spass beim lacen 😃

    ich weiss auch nicht soo genau ob ich nun das ganze mit Quicksort()
    oder mit qsort(.....) aufrufen soll

    #include <stdlib.h> ///Einfuerung der **standard Bibliotheken
    #include <stdio.h>
    #include <time.h>
    #include <io.h>
    #include <string.h>
    #include <search.h>

    int n,Werte1[_MAX_PATH]; //array
    int *pointW1 =Werte1;
    void Zufallsfunktion();
    //void Quicksort();
    void qsort(int Werte1[], int left, int right);
    void swap(int Werte1[], int i, int j);
    int left,right,i,j,last;

    void Inhalt();

    int main() //Hauptfunktion
    {
    printf("\n\n\nSie haben ein Sortierungssprogramm gestartet!");
    printf("\n\nGeben sie jetzt die Anzahl der Zahlen ein:");
    scanf("%i", &n); //Eingabe wird gespeichert und c zugewiesen

    //Bildschirmeingabe muss eine Zahl sein
    while ((n!=getchar()) && n==0){
    printf("Bitte geben sie eine Zahl ein!!!\n\n");
    break;
    }
    Zufallsfunktion();

    //Quicksort();

    void qsort(int Werte1[], int left, int right);

    Inhalt();

    return 0; //gib 0 zurueck
    }
    //----------------------------------------------------------
    void Zufallsfunktion()
    {
    int u;
    int z;
    srand( (unsigned)time( NULL ) ); //erzeuge zufällige Zahlen
    for( u = 0; u < n; u++ ){
    printf("Zahl %i =",u);
    z = rand();
    pointW1 = z; // füllen des arry
    printf("%i \n",z);
    pointW1++;
    }
    // right = pointW1;
    for( u = 0; u < n; u++ ){
    pointW1--;
    // left =pointW1;
    }
    return ;
    }
    //-----------------------------------------------------------
    void Inhalt()
    {
    int u;
    for( u = 0; u < n; u++ ){
    printf("ARRAY =%i \n",Werte1[u]);
    }
    return;
    }
    //
    *******************************************************
    //-----------------------------------------------------------
    void qsort(int Werte1[], int left, int right)
    //void Quicksort()
    {
    void swap(int Werte1[], int i, int j);

    if(left >= right){
    return;
    }
    swap(Werte1,left,(left+right)/2);
    last = left;
    for (i=left+1;i<=right;i++)
    if(Werte1[i]<Werte1[left])
    swap(Werte1,++last,i);
    swap(Werte1,left,last);
    qsort(Werte1,left,last-1);
    qsort(Werte1,last+1,right);
    }
    //------------------------------------------------------------
    void swap(int Werte1[], int i, int j)
    {
    int temp;
    temp = Werte1[i];
    Werte1[i] = Werte1[j];
    Werte1[j] = temp;
    }
    //------------------------------------------------------------**



  • ach soo manchmal kam was von wegen
    keine ueberladene funktion akzeptiert zwei Parameter



  • Nenn das mal in myqsort um 🙂



  • kommt leider immer noch der linker fehler
    halt jetzt von myqsort



  • Komisch, ausser dass ich kein _MAX_PATH habe, mosert mein Compiler nicht.
    Kommt der Linkerfehler auch bei viel einfacheren Programmen?
    Welchen Compiler benutzt Du? Vielleicht braucht der noch Settings, welche Standard-Libraries er einbinden soll.

    Übrigens rufst Du Dein qsort auch nie richtig auf, Du verwendest nur die Deklaration.
    BTW: Editiere hier in das Listing mal Codetags rein, damit man ggf. Fehler besser finden kann.


Anmelden zum Antworten