String Felder unter Visual C++ sortieren?
-
hi also hab jetzt nochmal versucht und glaub ich bin zu doof für die sort funktion ^^
dann mir nicht jemand mal nen beispiel geben wie ich die funktion anwende?
-
Da hats doch genügend Beispiele dabei:
http://www.cplusplus.com/reference/algorithm/sort/
Oder wo ist genau dein Problem?
-
hmm nee sorry das hilft mir nciht groß weiter

kann ich das so schreiben?
sort(Nachname[0].begin(), Nachname[n].end);oder wie?
-
fantom schrieb:
kann ich das so schreiben?
Nein, du willst ja das Array und nicht die einzelnen Strings sortieren (wobei wenn schon der Index gleich sein müsste).
Ein Array kannst du so sortieren (wobei
Laengedie Anzahl Einträge sind, die sortiert werden sollen):std::sort(Array, Array + Laenge);
-
hehe habs hinbekommen

std::sort(Nachname, Nachname + n);so hab ichs programmiert
so aber jetzt tut er dann später bei der ausgabe die zu dem Nachnamen gehöhrende Matrikelnr und Vornamen nicht dazu setzten
kann man das jetzt auch noch irgendwie lösen?
-
fantom schrieb:
so aber jetzt tut er dann später bei der ausgabe die zu dem Nachnamen gehöhrende Matrikelnr und Vornamen nicht dazu setzten
kann man das jetzt auch noch irgendwie lösen?Hier wären eben Klassen gut. Sonst kommst du wohl nicht darum herum, eine eigene Sortierfunktion zu schreiben...
-
oh okey
also geht das nicht anders mit dieser funktion? schade
da hab ich mich schon so sehr gefreut das es funkt und nix wars 
hmm
kann man das den mit den größer kleiner gleich zeichen machen?also kann ich dem sagen das er prüfen soll ob der AnfangsBuchstabe von emil < anton ist und wenn nicht das er dann anton nach vorne holt?
also konkret so schreiben
if (Nachname[0][0] < Nachname[1][0]) { { else { Nachname[0]= Nachname[1]; {und das dann natürlich in ner schleife mit variablen
sodass wenn Nachname[0] = emil ist und Nachname[1][0] = anton
er das wort anton in Nachname[0] rutscht
-
Du kannst gleich ganze Strings mit dem
operator<vergleichen (lexikographisch).P.S.: Mit deiner Anforderung, du düftest keine Klasse etc. verwenden, weil du keine Lust zum Erklären hast, kannst du froh sein,
std::sortnicht verwendet zu haben.
-
hehe ja denk sort hätt ich sagen können das ich das von euch hab
aber jetzt mit ganzen klassen und so schon zu arbeiten glaub das wäre ihm dann doch zu viel ^^aber ich probiere es mal mit dem Größer Kleiner zeichen
wenn ichs hab oder auch net meld ich mich nochmal

danke aber schonmal vorweg für die schnell hilfe hier
-
so aber jetzt tut er dann später bei der ausgabe die zu dem Nachnamen gehöhrende Matrikelnr und Vornamen nicht dazu setzten
kann man das jetzt auch noch irgendwie lösen?Gehen tut es ja, aber es wird ein gewurstel.
Mach eine Klasse, schreib eine Vergleichsfunktion und das ganze klappt wunderbar.
Die Klasse muss ja nichts grossartiges sein. Ganz einfach ein struct, dass dir die Member zusammenhält.struct user { std::string vorname_; std::string nachname_; std::string vorname1_; int matrikel_nr_; }; user users[1000]; //.. füllen //sortieren bool my_function ( const user & a, const user & b ) { return a.vorname < b.vorname; } std::sort ( users, users+1000, my_sort );Und wenn du eine Struktur erklären musst, dann ist das nichts anderes, als ein Objekt, dass mehrere andere Objekte enthält.
Du kannst jetzt irgendwas rumfrickel probieren, dass am Ende nicht läuft, oder dich 5 Minuten mit dem Schlüsselwort
structbeschäftigen und dann hast du eine saubere Lösung.
http://www.google.ch/search?hl=de&client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&hs=ihz&q=struct+c%2B%2B&btnG=Suche&meta=Da ist nichts schweres dran..
Und wenn du noch 10 Minuten Zeit hast, dann schaust du dir std::vector an und du hast schon fast eine Lösung, wie es ein Profi nicht besser machen könnte.
-
also danke erstmal euch
hab das jetzt soweit hinbekommen^^
hab es mit ner for schleife und if abfragen gelöst.
und klappt ganz gut auch wenns wahrscheinlich bisl umständlich ist.aber das mit den klassen und den gram kapier ich einfach nicht. ich mein wo soll ich so ne klasse den einfügen und wie rufe ich sowas dann auf und so?
na ja aber danke euch

-
Klassen werden normalerweise in Header gehalten, welche du von den Modulen, welche sie brauchen inkludiert werden.
Im Falle von user würde das in etwa so aussehen:user.hpp
#ifndef USER_HPP //Header guards #define USER_HPP struct user { std::string vorname_; std::string nachname_; std::string vorname1_; int matrikel_nr_; }; #endifmain.cpp
#include "user.hpp" int main () { user u; u.vorname_ = "ich"; // usw. std::vector<user> users; }In dem Fall sicher ein wenig Overkill, aber grundsätzlich läuft das so. Benutzen kannst du das Objekt, wie alle anderen Datentypen auch. std::string ist schlussendlich auch in etwa so etwas.