.| Autor | Beitrag |
|---|---|
|
000 14.05.2009, 18:32 Protestallianz |
Hi, ich möchte gerne die Tabelle nach Namen oder Vorname sotieren lassen, dies kann der Uster auswälen in iner Radiogroupbox. Mein erster Ansatz ist relativ komisch (ich glaube das Punkte Array kann man weg lassen...) aber von dem Grundgedanke richtig. Mein Prinzip funktioniert auf einem Punktevergabesystem, ich finde nur keine Idee für ein Abfragesystem, da es sehr kompliziert ist, ich hhoffe ihr könnt helfen! -GAMING- Dieser Beitrag wurde am 14.05.2009 um 18:34 von Protestallianz bearbeitet. |
|
Profil || Suche |
|
001 15.05.2009, 12:24 J_Hannes |
nutzt doch qsort: http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/ --Heut' debug ich morgen brows' ich übermorgen cast' ich die Königin auf int |
|
Profil || Suche |
|
002 15.05.2009, 13:38 luckerking |
Ich hab qsort bisher nur bei Zahlen benutzt. Es wird aber noch nicht vollständig Sortiert, denn du müsstes ja theoretisch den nächsten Buchstaben angucken, wenn buchstabe_1 und buchstabe_2 gleich sind. Gibt es den in C++ keine ArrayList oder ähnliches, die die schon vorgefertigete Methode sort hat? -- |
|
Profil || Suche |
|
003 15.05.2009, 13:46 Adrian_Broher Admin |
Was fuer ein Quark, Comparator schreiben und gut ist. Siehe auch das qsort example auf der verlinkten Seite. Eher nach "Reinventing the square wheel". -- There is nothing wrong with high standards. It's your problem that you don't meet them. |
|
Profil || Suche |
|
004 15.05.2009, 22:40 Protestallianz |
Mhm mit qsort verstehe ich nicht wie ich Strings sotiere und die dann wieder in der Tabelle einfüge! Ich habe bisher nur ein paar c++ Grundlagen, aber diese Aufgabe ist sehr wichtig, komme aber einfac nicht auf die Lösung... google bringt auch keine brauchbaren Ergebnisse! ---GAMING- |
|
Profil || Suche |
|
005 15.05.2009, 23:55 Bluthund |
Wenn du qsort nicht verstehst, hast du zu wenig Grundlagen. Nachholen! qsort() ist eigentlich immer _das_ Beispiel an dem der Nutzen von Funktionspointern erklärt wird. Dann solltest du erstmal kundtun mit welchem Framework du da rumhantierst (Von welchem Typ ist bspw. StringGrid1? Ist String nen typedef auf std::string?), damit die Leute erstmal wissen mit welcher API man es hier zu tun hat. Evtl bietet diese nämlich schon ein Konzept, um Daten einfach sortieren zu lassen. Wenn die Aufgabe ist einen Sortieralgorithmus zu implementieren, dann würde ich dir empfehlen mal im Web nach gängigen Verfahren zu suchen. Bubblesort und QuickSort wurden ja bereits genannt (ersteres wäre sicherlich das einfachste für nen Anfänger). Andere Kandidaten wären RadixSort, HeapSort oder MergeSort (Die Wikipedia hat da auch ne nette Liste). Dein Algorithmus taugt nix, da du anscheinend Strings vergleichen willst, das Konstrukt da oben aber nur die Anfangsbuchstaben vergleicht. Das war ein Witz, oder? ArrayList (ich nehme mal .NET an, da Javas ArrayList laut API-Referenz keine sort-Methode hat) kann btw auch nix tun wenn du deinem Datentyp nix mitgibst womit sich zwei Objekte dieses Typs vergleichen kann (*hint* IComparable) oder einen speziellen Komparator mitlieferst (IComparer). -- The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 16.05.2009 um 02:14 von Bluthund bearbeitet. |
|
Profil || Suche |
|
006 16.05.2009, 11:54 luckerking |
Leider nein :(. Wobei ich doch recht hatte, dass es so (einfach) nicht umzusetzten zu ist, man braucht einen Komparator. Wobei ich von sowas zum Ersten mal höre (gut zu wissen). Du hast recht, aber es gibt auch die methode sort() die keinen IComparer verlangt und an die hatte ich gedacht. Ich glaub ich sollte mich bei dem Thema C++ einfach raushalten :D. -- |
|
Profil || Suche |
|
007 16.05.2009, 15:05 Bluthund |
Wer lesen kann ist klar im Vorteil Kein implementiertes IComparable-Interface -> Kein Sort() OOP ist kein Voodoo-Automagic-Foo. Zusatz zum Komparator-Beispiel oben in #005: The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
008 16.05.2009, 16:11 luckerking |
Ich habe auch nichts anderes behauptet, vielleicht habe ich mich etwas falsch ausgedrückt. Ich meinte, dass du selbst nicht den Komparator angeben musst, sondern das .Net Framework den von der Klasse String nimmt, die das Interface IComparable implementiert. -- |
|
Profil || Suche |
|
009 17.05.2009, 22:34 Protestallianz |
Soooo habe es jetzt auch ohne eine Sort Funktion: Eigentlich ganz einfach (ja es ist komplizieter aber ich verstehe es und da ich unter Zeitdruck stehe musste ich es so machen hole aber die Sort Funktion nach) Hier mal der Code:
-GAMING- |
|
Profil || Suche |
|
010 18.05.2009, 11:16 caedes |
nutz strcmp() anstatt da selbst buchstaben zu vergleichen --caedes Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen. |
|
Profil || Suche |
|
011 18.05.2009, 19:16 Bluthund |
Arrays der Größe n laufen in C/C++ von 0 bis n-1, ergo greifst du mit deinem Code immer am ersten Element vorbei. Link zu den Zwischenschritten Grund: Du nimmst für den Vergleich buchstabe_1 her, der aber nur im äußeren Loop gesetzt wird. Durch die Verschiebe-Operationen kann der Wert in der Reihe mit Index l bereits ein anderer sein. Das passiert im verlinkten Beispiel bei l=3. Da ist rows[l] = 'f' und wird schon im ersten Schritt (j=1) mit rows[j] = 'q' getauscht. Für j=4 wird der Fehler offensichtlich, da an der Stelle dann 's' mit 'p' vertauscht obwohl ganz offensichtlich 's' nicht kleiner oder gleich 'p' ist buchstabe_1 aber sehr wohl. Und hör auf Buchstaben zu vergleichen wenn du Strings vergleichen willst, dafür gibts Funktionen/Methoden und die haben Leute geschrieben, die wissen was sie tun. --The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |

