qsort und Array
-
Hallo!
Erst mal danke für die Antworten!!!
Das Array hat eine maximale Größe von 5x1000. Die Elemente sehen z.B. so aus:[Vorname] [Name] [Wohnort] [Geburtsdatum] [Email-Adresse]
Es soll nun möglich sein, z.B. in erster Ebene nach Name, in zwieter nach Vorname und in dritter nach Geburtsdatum zu sortieren. In einer der Ebenen evtl auch rückwerts.
Hat jemand eine Idee wie dann die Compare-Funktion die qsort benötigt aussehen soll?
PS: Es _muss_ qsort sein
-
In der Theroie doch so
int vergleich (a, b){ int i; i = strcmp(a.name, b.name); if (i != 0){ return i; } else { i = strcmp(a.vorname, b.vorname); if (i != 0){ return i; } else { i = geburtvergleich(a.geburt, b.geburt); return i; } } }Ist nicht ganz wie dein Array und auch nur Pseudo-Code aber ich denke du verstehst schon.
geburtvergleich() muss natürlich noch geschieben werden und gleich rückgabesystem haben wie strcmp.
-
Verwende std::sort, ist schneller als qsort

-
klingt, als solltest Du besser ne
struct Person { std::string vorname; std::string nachname; // etc. }bauen. Oder sogar ne class? Hängt vom Anwendungsfall ab...
Dann ist das Array schonmal eindimensional.
Dann bauste einen Vergleicher:bool compareByNachname(Person const& lhs, Person const& rhs) { return lhs.nachname < rhs.nachname; }Anschließend genügt ein einfacher Aufruf:
sort(array, array+anzahlEinträge, compareByNachname);Und die Sache ist sortiert. Wenn Du ein anderes Sortierkriterium willst mußt Du nur ne andere Vergleichsfunktion schreiben und die dann als Parameter an sort übergeben.
MfG Jester
-
PS: Es _muss_ qsort sein
-
Oh, übersehen. Da hilft wohl nur eins: Die Aufgabenstellung abändern.

-
Dann ist ja wohl auch Aufgabenstellung, den qsort selber zu schreiben, oder? Amsonsten würde das schließlich keinen Sinn ergeben.
-
Optimizer schrieb:
Dann ist ja wohl auch Aufgabenstellung, den qsort selber zu schreiben, oder? Amsonsten würde das schließlich keinen Sinn ergeben.
Hm, ich ging bisher davon aus, daß es sich dabei um die im C-Standard enthaltene qsort-Funktion handelt.
-
Ähm ok, mein Fehler, steht im ersten Post wohl so drin. Natürlich IMHO sinnlos, das vorzuschreiben.
-
Optimizer schrieb:
Natürlich IMHO sinnlos, das vorzuschreiben.
Das kommt davon, dass die Aufgabe im Rahmen eines - wie es ja immer heisst - praxisbezogenen FH-Studiums gestellt wurde...
