Daten in einer textdatei sortieren

namuen

Grünschnabel
Hi,
die Datenstruktur würde in etwa so aussehen:
Name: Punkte:
Name1 123
Name2 456
Name3 12
Name4 111

wie kann ich nun die Namen nach ihren Punkten sortieren?
Soll ich die ganzen Daten in ein struct oder ein array einlesen und dann so sortiren
(zb mit qsort), oder gibt es eine möglichkeit direkt in der datei(textdatei) die namen nach Punkten zu sortieren?

Ich progammiere mit C.
Danke schonmal im vorraus.
 
Hi und Willkommen bei tutorials.de

du musst alles einlesen
(theoretisch würde es auch so gehen, aber zum Sortieren
wäre ein indexmäßiger Zugriff wie bei Arrays ganz hilfreich.
In der Datei ist das nur sehr umständlich möglich).
 
Hi,
ich habe schlechte Erfahrungen mit z.B. qsort() gemacht und ich glaube, es ist einfacher eine eigene Sortierfunktion zu programmieren.
So in etwa:
C:
#define anz_punkte 4
int punkte[4];
int puffer=0;
for (short i=0; i<anz_punkte; i++)
{
     for (short j=i+1; j<anz_punkte; j++)
     {
           if (punkte[i]<punkte[j]) {
                puffer=punkte[i];
                punkte[i]=punkte[j];
                punkte[j]=puffer;
            }
      }
}
Das kann man bestimmt auch besser programmieren, aber das wäre ein möglicher Ansatz (ich hab den Namen leider gerade vergessen). Die Idee dahinter ist einfach, dass, wenn es nicht richtig sortiert ist, eine höhere Zahl im Array auch tatsächlich größer sein muss. Zum Einlesen würde ich fstream verwenden. Wenn du willst schick ich dir noch ein Codestück zum Einlesen und ins Array packen.
Viel Spaß. :)

EDIT:
Ich glaube, es war "bubblesort".
 
Zuletzt bearbeitet:
Es hat bei mir öfter mal nicht funktioniert, und wenn war es dennoch ein realtiv großer Aufwand, die Funktion richtig aufzurufen, wobei ich dann schon lieber die ganze Kontrolle über die Funktion haben möchte. Ist aber eher "Geschmackssache"; ich programmiere einfach möglichst viel selbst, ist ja auch ne gute Übung. ;)
 
ok vielen Dank. ich denk ich probier es mal mit einer verketteten Liste (is ja theoretisch auch eine art von array)
 
Zurück