2D String-Array nach best. Spalte sortieren



  • Hallo allerseits!
    Ich bin noch totaler C-Anfänger, also seid bitte gnädig! Ich habe folgendes Problem, dass mich wahnsinnig macht:

    Ich soll ein string-Array mit Bubblesort anhand eines auf der Kommandozeile eingegebenen Spaltenwerts sortieren.
    Das Array sieht z. B. so aus(kommt aus ner CSV-Datei):

    Name Vorname Geb.-Datum Straße Ort
    Meier Hans 30.04.1987 Priesterweg 5 Berlin
    Schmidt Mike 05.06.1966 Mauerstr. 10 Hannover
    Herne Johanna 10.01.1978 Saubergasse 13 Hamburg

    Wenn man jetzt z.B. die 0 eingibt, soll also die Tabelle nach den Nachnamen sortiert werden, sodass am Ende da steht

    Name Vorname Geb.-Datum Straße Ort
    Herne Johanna 10.01.1978 Saubergasse 13 Hamburg
    Meier Hans 30.04.1987 Priesterweg 5 Berlin
    Schmidt Mike 05.06.1966 Mauerstr. 10 Hannover

    Also die Spaltenüberschriften sollen natürlich stehen bleiben.
    Ich weiß nicht mehr weiter, ich habs mit einer rückwärts und einer vorwärts laufenden for-Schleife probiert, aber es funktioniert nicht richtig!
    Also bis jetzt sieht das Ganze so aus:
    (Für die temps kann man bestimmt auch for benutzen, aber ich weiß nicht wie...)

    for(i=anzahl_zeilen;i>=0;i--)
    for(zeile=2;zeile<=anzahl_zeilen;zeile++)
    {
     if(strcmp(tabelle[zeile][k],tabelle[zeile-1][k])<0) {
      strncpy(temp1,tabelle[zeile][0],21);
      strncpy(temp2,tabelle[zeile][1],21);
      strncpy(temp3,tabelle[zeile][2],21);
      strncpy(temp4,tabelle[zeile][3],21);
      strncpy(temp5,tabelle[zeile][4],21);
    
      for(x=0;x<MAX_SP_ZAHL;x++){
       strncpy(tabelle[zeile][x],tabelle[zeile-1][x],21);
       }
      strcpy(tabelle[zeile-1][0],temp1);
      strcpy(tabelle[zeile-1][1],temp2);
      strcpy(tabelle[zeile-1][2],temp3);
      strcpy(tabelle[zeile-1][3],temp4);
      strcpy(tabelle[zeile-1][4],temp5);
     }
    }
    

    k ist die eingegebene Spalte.
    Es kommt aber Blödsinn raus: Die Zeile, die ganz nach unten gehört, wird einfach verschluckt, unter der Überschriftenzeile steht ne Leerzeile und für [1] und [3] funktioniert es überhaupt nicht. 😡

    Hilfe!



  • Hi there!

    Mein Lösungsvorschlag wäre folgender:

    1. Lege dir eine passende Struktur an für alle Elemente aus der Zeile.
    2. Lese weilenzeise aus der Datei heraus.
    3. Benutze strtok um die einzelnen Zeichenketten abzuspalten,
      die dann in der Struktur gespeichert werden.
    4. Sortiere nun einfach mit Hilfe der Struktur.

    Zeh Mau


Anmelden zum Antworten