Ich nehme mal an, das ist sowas wie eine Tennis-Tabelle in der Spiele, Sätze und Matches als gewonnen:verloren tabelliert werden. (Oder so ähnlich)
Als erstes mal die Datenstruktur. Ich vermute mal, du hast das Zeug nicht als String gespeichert, sondern als record oder als Klasse. Wenn nicht, bitte nachholen!
Delphi-Quelltext
1: 2: 3:
| TPlayer = record games_won, games_lost, sets_won, sets_lost, matches_won, matches_lost: Cardinal; end; |
Dann würde ich als zweites Eine Vergleichsfunktion schreiben, die 2 Einträge miteinander vergleicht und was positives zurückgibt, wenn der erste besser ist, 0 wenn beide gleich gut sind und was negatives wenn der zweite besser ist:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function Compare(a, b: TPlayer): Integer; begin Result := CompareMatches(a, b);
if Result <> 0 then exit;
Result := CompareSets(a, b);
if Result <> 0 then exit;
Result := CompareGames(a, b); end; |
Es wird als erst das wichtigste Kriterium überprüft, wenn das Gleichheit liefert das zweitwichtigste und wenn das auch gleich ist, das letzte.
Die oben benutzten Funktionen könnten so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function CompareMatches(a, b: TPlayer): Integer; begin Result := a.Matches_won - b.matches_won;
if Result = 0 then Result := b.Matches_lost - a.Matches_lost; end; |
Dann solltest du eine Vergleichsfunktion haben, die 2 Spieler verglichen kann und sagt, welcher besser ist.
Danach gibt es diverse Sortieralgorithmen, mit denen du die Liste sortieren kannst
