Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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!

Geschrieben (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 von Crush
Geschrieben
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

Geschrieben

@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); // b -> a

strcpy (b, temp); // temp -> b

printf ("---\n%s\n%s\n",a,B);

/* 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

Geschrieben (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 von Crush

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...