Sortieren von String-Array Alphabetisch C++
Ich versuche, ein Programm zu schreiben, ist angesichts der folgenden Strukturen:
struct aPlayer {
string name; //name of player
int wins; //number of wins player has
};
struct aCompetition {
string name; //name of the match
int numPlayers; //number of players in the club
aPlayer player[10]; //list of players in this club
};
Von dort aus möchte ich eine Funktion schreiben, Sortieren die Spieler alphabetisch nach name. Die Deklaration der Funktion wie folgt aus:
void sortByName(aCompetition & c){}
Hinweis: ich möchte dies tun, indem Sie nur mit for-Schleifen, while-Schleifen und if-Anweisung(en). Die einzige Möglichkeit, die ich denken konnte, die beiden zu vergleichen strings wäre ein Vergleich der ASCII-Werte. Ich bin mir nicht sicher, wie das zu tun, so dass jede Eingabe wird sehr geschätzt. Danke!
std::string unterstützt weniger-als und größer-als-Vergleiche. Ich würde die Verwendung von std::sort, aber wenn Sie sind auf das beschränken, was Sie können mit einem einfachen bubble-sort wäre in Ordnung und man kann leicht finden, dass Algorithmus.
Sollte aCompetition wirklich ein struct? Wenn man bedenkt es hält ein array?
Scheint vollkommen normal zu mir. Ein Wettbewerb enthält Spieler.
Sollte aCompetition wirklich ein struct? Wenn man bedenkt es hält ein array?
Scheint vollkommen normal zu mir. Ein Wettbewerb enthält Spieler.
InformationsquelleAutor Buffalo282 | 2017-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, dies ist für die Hausaufgaben (und wenn es nicht ist, dies zu tun durch sich selbst wird Ihnen helfen, eine Menge mehr als nur sehen, die Antwort,) werde ich nur geben Ihnen ein paar Tipps, um Ihnen zu helfen.
Vergleichen von ASCII-Werten:
http://www.asciitable.com für die ascii-Werte. Ich empfehle, mit tolower() auf den Namen des Spielers, denn Großbuchstaben sind niedrigere Werte als Kleinbuchstaben.
Wenn die erste Ziffer gleich ist, bewegen auf die zweite:
(Eine Möglichkeit, dies zu tun.)
InformationsquelleAutor Jish
Sortierung ist der standard-Bibliothek, die auf Typen mit einem
operator<
oder anderen Typen gegeben, wenn das Komparator. Man baut aus derstring::operator<
führt, die lexikalische Vergleich.Wenn Sie nicht über C++11 lambdas dann würden Sie verwenden einen Funktor.
InformationsquelleAutor ephemient
Eine einfache Lösung dafür ist die Speicherung der Werte als set. Dies ist ein ziemlich standard-Weg, um Daten zu speichern in C++ und hat den Vorteil, automatisch die Sortierung alphanumerisch. Sie haben, um Ihren Kopf herum wickeln Iteratoren obwohl die Ausgabe, Sie effektiv.
Betrachten dieser Ausführung:
Von hier aus können Sie diese verwenden, um die Ausgabe der Namen:
Müssen Sie auch eine
#include <set>
in Ihrem header-Datei.InformationsquelleAutor Eric Adam Fortney