Problem beim vertauschen von adressen
-
Hallo zusammen
ich darf mich seit kurzem mit C++ beschäftigen und stehe im mom ein wenig auf dem schlauchich soll in einer aufgabe Kommandozeilen parameter einlesen und dann sortieren
aber nicht so das ich einfach die "Werte" tausche sondern ich soll die Adressen in argv tauschenSprich
hilfsAdressenSpeicher = (adresse)argv[0]
(adresse)argv[0]=(adresse)argv[1]
(adresse)argv[0]= hilfsAdressenSpeicherich hab jetzt eine ganze weile rumgebastelt und komm irgendwie auf keinen Grünen Zweig
ich hoffe das mir wer helfen kann
Gruß Christian
-
Ich denke du hast die Aufgabe falsch verstanden. Adressen kann man so nicht wechseln..
-
das Dumme ist die Aufgabe lautet genau so
deswegen steh ich ja so auf dem Schlauchwie ich die Werte im Array vertausche weiß ich das ist auch kein ding
leider will unser Prof das "genauso" wie oben beschrieben.
mein Problem ist halt das ich nichtmal den ansatz einer idee habe
-
Gib mal die exakte Aufgabenstellung.
Ich denke mal, dass er auf Zeiger hinaus will, aber so, wie das bis jetzt klingt ist das Unsinn.
-
Dann ist die Aufgabe unlösbar.
bist du sicher, dass damit nicht eine Indirektion durch Zeiger gemeint ist und die Werte der Zeiger getauscht werden sollen?
-
Also:
Erstellen sie ein Programm das Über den KomamdozeilenParameter argv mehrer
Strings einliest die Strings sollen Mittels der Funktion ...Komsort(...)
Alphabetisch sortiert werden. Es sollen nicht wie Bisher die Inhalte sondern die
Pointeradressen in argv getauscht werden.Das ist der Aufgabentext den ich bekommen habe. hab ich da was falsch verstanden?
Gruß Christian
-
das geht ganz einfach:
#include <cstring> #include <functional> struct string_comparer : std::unary_function<const char*, bool> { private: typedef std::unary_function<const char*, bool> base; public: typedef base::argument_type argument_type; typedef base::result_type result_type; bool operator() (const char* lhs, const char* rhs) const { int compared = strcmp(lhs, rhs); return compared < 0; } };
die zugehörige main und damit wir uns zum testen nicht die arbeit machen müssen, in unserer ide die option mit command-line-arguments zu suchen:
#include <algorithm> #include <iostream> #include <iterator> int x_main(int argc, char* argv[]) { std::sort(argv+1, argv+argc-1, string_comparer()); std::copy( argv+1, argv+argc, std::ostream_iterator<char*, char>(std::cout, "\r\n") ); return 0; } int main() { char* argv[] = { "__<path>__", "asd", "sdf", "dfg", " ej", "op", "123k", "_-2" }; int argc = sizeof(argv)/sizeof(*argv); return x_main(argc, argv); }
bb