Strings sortieren
-
Also ich habe
char * String [ ] = { "B" , "A", "C", "F", "D" };Das hiesse ja jetzt :
String[1] = "B"
String[2] = "A"Wie kann ich jetzt alle Strings in String nach Alphabet sortieren ?
-
Wenn du wirklich nur einzelne Buchstaben in den strings hast kannst du doch auch einfach char nehmen:
char zeichen[] = { "B", "A", "C", "F", "D" };und diese dann anhand ihres ASCII-Wertes sortieren:
int i; char buffer; ... for(i=0;i<5;i++) { if((int)zeichen[i]>(int)zeichen(i++) { buffer = zeichen[i]; zeichen[i] = zeichen[i++]; zeichen[i++] = buffer; } }NICHT AUSPROBIERT, NUR EINE IDEE

-
Setz Dich mal mit Sortieralgorithmen zusammen:
Ist eigentlich keine Frage von API, sondern von C.
http://pronix.linuxdelta.de/C/standard_C/c_programmierung_25.shtml#3
http://pronix.linuxdelta.de/C/standard_C/c_programmierung_24_2.shtml
-
Niklas Cathor schrieb:
und diese dann anhand ihres ASCII-Wertes sortieren:
Ein Beispiel

Der ASCII-Wert für A (= groß 'a') ist 65, der für a (= klein 'a') ist 97.
Demnach würde bei einem cast nach int und einem anschließenden Vergleich a größer als A sein!
-
Niklas Cathor schrieb:
und diese dann anhand ihres ASCII-Wertes sortieren:
nicht jeder verwendet nur ASCII Zeichen!
CodeFinder schrieb:
Ein Beispiel

Der ASCII-Wert für A (= groß 'a') ist 65, der für a (= klein 'a') ist 97.
Demnach würde bei einem cast nach int und einem anschließenden Vergleich a größer als A sein!Das ist ein schlechtes Beispiel für einen Stringvergleich!
Wir wissen aber zu wenig vom OP, was er genau will. Stringvergleich ist sehr allgemeingültig.
I.d.R. macht man sowas über "Weights".
Siehe auch: LCMapString
Oder schau im Unicode-Standard nach... (link fehlt mir gerade).
-
Jochen Kalmbach schrieb:
Niklas Cathor schrieb:
und diese dann anhand ihres ASCII-Wertes sortieren:
nicht jeder verwendet nur ASCII Zeichen!
CodeFinder schrieb:
Ein Beispiel

Der ASCII-Wert für A (= groß 'a') ist 65, der für a (= klein 'a') ist 97.
Demnach würde bei einem cast nach int und einem anschließenden Vergleich a größer als A sein!Das ist ein schlechtes Beispiel für einen Stringvergleich!
Wir wissen aber zu wenig vom OP, was er genau will. Stringvergleich ist sehr allgemeingültig.
I.d.R. macht man sowas über "Weights".
Siehe auch: LCMapString
Oder schau im Unicode-Standard nach... (link fehlt mir gerade).Dämlicher Besserwisser ... geh kacken man!
-
Jochen Kalmbach schrieb:
Niklas Cathor schrieb:
und diese dann anhand ihres ASCII-Wertes sortieren:
nicht jeder verwendet nur ASCII Zeichen!
Jo! Er aber schon:
Jochen Kalmbach schrieb:
CodeFinder schrieb:
Ein Beispiel

Der ASCII-Wert für A (= groß 'a') ist 65, der für a (= klein 'a') ist 97.
Demnach würde bei einem cast nach int und einem anschließenden Vergleich a größer als A sein!Das ist ein schlechtes Beispiel für einen Stringvergleich!
Wir wissen aber zu wenig vom OP, was er genau will. Stringvergleich ist sehr allgemeingültig.
I.d.R. macht man sowas über "Weights".
Siehe auch: LCMapString
Oder schau im Unicode-Standard nach... (link fehlt mir gerade).Hm jo aber im 1. Post hat er ja nur einzelne Zeichen angegeben, deswegen bin ich ja davon ausgegangen, dass es auch nur solche vergleichen will...wenns Zeichenketten sind, würde ich warscheinlich std::string's nehmen; allein schon wg. der Unabhängigkeit bzgl. UNICODE usw.
. Emm was sind denn 'Weights' ? 
-
"char" heisst noch lange nicht, dass da nur ASCII Zeichen drin sind. Oder ist 'ä' ein ASCII Zeichen?
Ich geb ja zu, im OP stehen nur ASCII Zeichen... trotzdem kann ich nicht ausschliessen, dass er nicht doch ein 'ä' verwenden will (wie ich schon sagte: wir wissen zu wenig). SOnst hätte er ja schreiben können: "Ich will Zahlen sortieren". Da ist es dann eindeutig.Bzgl. Weights:
Siehe: Globalization Step-by-Step (Sorting and String Comparison)
http://www.microsoft.com/globaldev/getwr/steps/wrg_sort.mspxFür eine ganz schnelle Einführung, siehe dieses Bild:
http://img.microsoft.com/globaldev/images/steps/f04tm21.gifAnsonsten siehe:
Unicode Collation Algorithm
http://www.unicode.org/reports/tr10/Unknown-87 schrieb:
Dämlicher Besserwisser ... geh ****** man!
Ich wollte nur sagen, dass viele Dinge nicht so trivial sind, wie sie oft vermutet werden...
-
Also um nochmal zu klaeren.. das sollen etwas laengere String werden zum Bespiel
char * Buffer [] = { "Test" , "Alpha", "Computer" };KEINE Zahlen
-
std::string at() for-schleife } catch(...) { cya }
-
http://theory.stanford.edu/~amitp/rants/c++-vs-c/
(gaaanz unten)Aber vorsicht: Die meisten ALgorythmen vergelichen nur "Zahlen" und keine Codepoints (also die Sortierung von ä, ö, usw. ist dort falsch.