GUNNERS Geschrieben 19. August 2010 Geschrieben 19. August 2010 Habe ein Problem, wie man Funktion umtauschen kann: Beispiel: Soll hier y als erste Stelle ist, muss es mit x tauschen, damit y hinter x bleibt y=20 x=10 Richtige Reihenfolge x=10 y=20 Und ist x an erste Stelle, y zweite Stelle, soll es unveränderlich bleiben. Würde dies Befehl heut noch haben thx Zitieren
carstenj Geschrieben 19. August 2010 Geschrieben 19. August 2010 Hi, wie sieht denn dein Lösungsansatz aus? Wenn du dir soviel Mühe bei der Aufgabe gibst, wie beim Verfassen dieses Textes solltest du mal über eine Arbeitsweise nachdenken. Falls Deutsch nicht deine Muttersprache ist, schreibe es auf englisch. Aber etwas Eigeninitiative solltest du schon zeigen! Zitieren
Crush Geschrieben 19. August 2010 Geschrieben 19. August 2010 (bearbeitet) Habe ein Problem, wie man Funktion umtauschen kann: Du meinst vermutlich nicht Funktionen - ich kann jedenfalls keine sehen, sondern Werte? Ich gehe mal davon aus, daß x und y z.B. vom Typ float sind. Dann würde das so normale Tauschen mit Hilfsvariable so aussehen: float tmp=x; x=y; y=tmp;[/PHP] Wenn es sich um ein Binärformat wie char, short, int oder long handelt, geht es mit einem Trick ohne Hilfsvariable sogar schneller: [PHP]x^=y^=x^=y; Sollten diese vorzeichenbehaftet sein und in jedem Fall korrekt behandelt werden, muß man das ganze noch abändern: x-=y;y+=x;x=y-x; Bearbeitet 19. August 2010 von Crush Zitieren
Werwofl Geschrieben 19. August 2010 Geschrieben 19. August 2010 Du meinst vermutlich nicht Funktionen - ich kann jedenfalls keine sehen, sondern Werte? Ich gehe mal davon aus, daß x und y z.B. vom Typ float sind. Dann würde das so normale Tauschen mit Hilfsvariable so aussehen: float tmp=x; x=y; y=tmp;[/PHP] Wenn es sich um ein Binärformat wie char, short, int oder long handelt, geht es mit einem Trick ohne Hilfsvariable sogar schneller: [PHP]x^=y^=x^=y; Sollten diese vorzeichenbehaftet sein und in jedem Fall korrekt behandelt werden, muß man das ganze noch abändern: x-=y;y+=x;x=y-x; Ich verstehe nicht ganz was du willst. Suchst du nach einem Algorithmus? Weil den Ansatz an sich ist ja richtig Zitieren
Guybrush Threepwood Geschrieben 19. August 2010 Geschrieben 19. August 2010 Das war eine Antwort auf den Ursprungspost :schlaf: Zitieren
GUNNERS Geschrieben 19. August 2010 Autor Geschrieben 19. August 2010 @carstenj Mein Muttersprache ist Gebärdensprache. Hier ist es nicht möglich Versuch genauer erklären Aktuell, was im Text steht =>>> So soll Ergebnis aussehen x=1 y=2 =>>> x=1 y=2 y=2 x=1 =>>> x=1 y=2 Einfache Baustein habe ich gefunden und lautet: char* a = new char[1024]; strcpy (a, "y=20"); char* b = new char[1024]; strcpy (b, "x=20"); char* temp = new char[1024]; strcpy (temp, a); // a -> temp strcpy (a, ; // b -> a strcpy (b, temp); // temp -> b printf ("---\n%s\n%s\n",a,; /* Ausgabe * --- * x=20 * y=20 */ Nun bin ich auf Suche nach Verbindung zwischen diese Befehl und Dateipfad, bin C++ Anfänger, aber ich habe eine schwere Projekt bekommen, den ich erledigen muss. Dann soll Befehl lesen, wenn x hinter y steht, muss getauscht werden, sonst bleibt es unverändert Zitieren
Crush Geschrieben 19. August 2010 Geschrieben 19. August 2010 (bearbeitet) Also die Frage war schon extrem unklar gestellt. Da braucht man sich nicht wundern, wenn die Antwort daneben läuft. So wie ich das sehe, hast Du eine Liste von Textzeilen in denen ein Buchstabe und ein = steht. Wo eine Datei sein soll sehe ich bis jetzt noch nicht. Soll das eine Eingabe-Datei sein, von wo die Zeilen eingelesen werden? Wie ist das mit dem Command gemeint. Wo soll ein Command ausgegeben werden. In C++ oder in ein Kommandozeilen-Fenster? Diese Zeilen sind doch keine vollwertigen Befehle. Für mich ist das noch verwirrender als die erste Ausgangsfrage. Wenn es um die Zeilen für einen C++ Compiler geht, dann ist es vollkommen egal, welche Zeile zuerst steht, weil eh immer die richtige Variable den richtigen Wert zugewiesen bekommt. Da braucht man dann nichts Sortieren und das Endergebnis wäre gleich. Die Strings finde ich außerdem bei 3 Buchstaben ein weinig überdimensioniert mit 1024 Zeichen. Da gibt es deutlich schönere Containter wie CString oder std-strings. Da Du Dir die Strings eh selber zurecht kopierst und von keiner variablen Eingabedatei her liest, dreh einfach die Zeilen um und schon ist das Problem erledigt: char* b = new char[1024]; strcpy (a, "x=20"); char* a = new char[1024]; strcpy (b, "y=20"); [/PHP] Ernsthaft, ein echter Sinn ist bei dieser komischen Aufgabe für mich nicht erkennbar. So wie ich das sehe müßtest Du die Zeilen nach dem Variablennamen irgendwie sortieren. Das sollte aber schon vor dem strcpy am besten passieren oder direkt danach. Da a und b übrigens Zeiger sind, brauchst Du keine Inhalte hin und her zu kopieren. Tausche die Zeiger einfach aus, die zeigen dann schon auf die richtige Stelle im Speicher wo die Strings stehen. Also eher sowas: [PHP] if (*b < *a) { char * tmp = a; a = b; b = tmp; } Da Zeiger wie die die ints funktionieren, dürfte das mit dem Trick ohne Dritte Variable hier übrigens auch funktionieren. Vermutlich will nur einer Dein Verständnis testen. Versuche mal richtig zu verstehen, was Zeiger sind und wie man Vergleiche anstellt oder Sortierroutinen anwendet. Darauf wird es letztendlich bei der Aufgabe heraus laufen. Bearbeitet 19. August 2010 von Crush Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.