Sortierung?!
-
Guten Tag!
Ich arbeite zurzeit an einen, sozusagen, Virtuellen Würfelspiel.
Nach starten des Programms folgen Würfelwürfe und diese Werte werden dann unsortiert und in Reihenfolge ausgegeben.
Hier der Code als Beispiel:main() { // Initiative Berechnen int Sp1,Sp2,Sp3,G1,G2,G3,G4,G5 = 0; int Spa1,Spa2,Spa3,Ga1,Ga2,Ga3,Ga4,Ga5 = 0; int f1,f2,f3,f4,f5 = 0; srand(time(NULL)); Sp1 = rand() % 6 + 1; Sp2 = rand() % 6 + 1; Sp3 = rand() % 6 + 1; G1 = rand() % 6 + 1; G2 = rand() % 6 + 1; G3 = rand() % 6 + 1; G4 = rand() % 6 + 1; G5 = rand() % 6 + 1; textcolor(green); cout << "Initiative Kiara : "<< Sp1 <<"\n"; cout << "Initiative Jack : "<< Sp2 <<"\n"; cout << "Initiative Hannah: "<< Sp3 <<"\n\n"; textcolor(red); cout << "Initiative Gegner1: "<< G1 <<"\n"; cout << "Initiative Gegner2: "<< G2 <<"\n"; cout << "Initiative Gegner3: "<< G3 <<"\n"; cout << "Initiative Gegner4: "<< G4 <<"\n"; cout << "Initiative Gegner5: "<< G5 <<"\n"; fflush(stdin); getchar(); }Doch nun würde Ich diese Initiativewerte gerne sortiert haben.
Ein Beispiel damit es klarer wird.
Sagen wir mal die Werte sind:
Initiative Kiara = 2
Initiative Gegner 1 = 3
Initiative Hannah = 5Es soll mir dann sortiert ausgeben werden:
Hannah ist am Zug
Gegner 1 ist am Zug
Kiara ist am ZugAlso sodass sich die COUT nach den Initiative Werten richtet.
Gibt es da irgendeine Lösung?
Gruß, Jack
-
Schau dir mal STL-Container und STL-Algorithmen an (z.B.
std::sort()). Die einzelnen Variablen sind ja furchtbar...P.S.
int main()wäre korrekt,fflush(stdin)ist undefiniertes Verhalten und auch sonst wäre portabler Code zu empfehlen. Wo hast du das gelernt? Ich rate dir zu einem guten C++-Buch.
-
Dafür brauchst du eine Zuordnung von Würfelergebnis zu dem jeweiligen Spieler. Also bspw. sowas:
struct Spielerwurf { std::string spieler; int wurf; }Dies kannst du perspektivisch zu einer richtig schicken Klasse ausbauen, etwa durch Methoden "wuefeln()", womit du diese expliziten "rand() % 6 + 1"-Aufrufe sparen könntest. Oder eine Methode "Ausgabe" oder was auch immer die Spieler sonst noch machen müssen...
aber zurück zum Thema: die Standardbiobliothek bietet Sortieralgorithmen an. Du erstellst also bspw. einen std::vector<Spielerwurf> und rufst dann std::sort auf. Allerdings musst du noch sagen, wie die Struktur verglichen werden sollen. Dafür brauchst du ein Vergleichsobjekt:
struct Compare { bool operator()(const Spielerwurf& lhs, const Spielerwurf& rhs) { return lhs.wurf < lhs.wurf; } }Ich bin mir bei der geforderten Syntax nicht ganz sicher, aber vom Konzept sollte es so stimmen

Felix
-
@ Nexus:
Ich hab das bisschen was Ich kann in der Berufsschule während der Ausbildung gelernt...
-
Ich denke Ich sollte das ganze mal von neu anfangen.
Vielleicht ersteinmal die Sprache ordentlich lernen.
Gibt es irgendwelche Empfehlungen welche Bücher oder anderen Medien für den Einstieg in C++ sinnvoll sind?
-
JackRpg schrieb:
Gibt es irgendwelche Empfehlungen welche Bücher oder anderen Medien für den Einstieg in C++ sinnvoll sind?
http://www.c-plusplus.net/forum/251551
Tutorials und Videos kannst du vergessen, da sie meist entweder falsch oder unvollständig sind. Daher solltest du dich nur guten Büchern widmen.