Wie kann man Variablen in Feldern Tauschen(C Compiler)?

3 Antworten

c++ hat seit c++14 std::exchange: https://en.cppreference.com/w/cpp/utility/exchange. Das nutzt low level Optimierungen, um die bestmögliche Lösung für die jeweilige Plattform zu erzielen.

Sonst ist es voll okay, eine Hilfsvariable zu nutzen. Leserlichkeit ist auch wichtig. Oder du nutzt die Tricks, welche teils hier schon beschrieben wurden. Im Internet findest du aber auch viel dazu. https://de.wikipedia.org/wiki/Dreieckstausch | https://en.wikipedia.org/wiki/Swap_(computer_programming)

GuteAntwort2021  07.05.2024, 19:46

Es geht offensichtlich darum, erst einmal die absoluten Grundlagen der Programmierung zu erlernen ...

1
7K1NGS 
Fragesteller
 09.05.2024, 12:20

@JanaL161 Danke für die Antwort, aber es ist leider so wie @GuteAntwort2021 schreibt. Ich bin erst dabei die Grundlagen zu lernen, aber wirklich vielen Dank für deine Antwort und deine Zeit. Bin immer noch dran den Quellcode zu schreiben, ist irgendwie nicht ganz so einfach.

0

Ich habe Spaß daran, solche Aufgabenstellungen auszuspielen. Tatsächlich kann man zwei numerische Variablen auch ohne Hilfsvariable tauschen, siehe hier:

x ← a

y ← b

x ← x + y // a + b

y ← x - y // (a + b) - b = a

x ← x - y // (a + b) - a = b

Woher ich das weiß:Studium / Ausbildung – Trust me, I'm an engineer
7K1NGS 
Fragesteller
 09.05.2024, 12:22

@J0T4T4 Danke für deine Antwort. Das Problem hier ist halt ich soll es mit einer Hilfsvariable machen und die Schleife (for-Schleife) soll nur bis n/2 laufen. Irgendwie tue ich mich da echt schwer dieses mal mit dem Quellcode. Du weißt nicht wie es so funktioniert oder?

0

Hallo.

Ohne mir jetzt die Aufgabe angeguckt zu haben, wie würdest du es denn im wahren Leben machen?

Angenommen du du hast zwei Becher und möchtest das was unter Becher 1 liegt in Becher 2 packen und andersrum. Du kannst aber zu jeder Zeit nur eine Sache machen und nur eine Sache tragen.

Wie würdest du das Problem bewerkstelligen?

Genau:

  • Inhalt aus Becher 1 herausnehmen und an einem neuen Ort ablegen (Hilfsvariable).
  • Inhalt aus Becher 2 in Becher 1 packen.
  • Inhalt aus der Hilfsbehälter (Hilfsvariable) aufheben und in Becher 2 legen.

So verfährst du beim Programmieren. Du erstellst dir also noch einen Ablageort mit entsprechendem Datentyp, also eine Hilfsvariable und tauschst dann nach dem Schema.

LG

Woher ich das weiß:Studium / Ausbildung – Diplom Wirtschaftsinformatiker
7K1NGS 
Fragesteller
 09.05.2024, 12:25

@GuteAntwort2021 Danke für das Beispiel, das hat es mir nochmal etwas einfacher erklärt, wie es funktioniert. Allerdings komme ich da bei dem Quellcode überhaupt nicht weiter, weil ich da eine for-schleife brauche die nur bis n/2 läuft. Löse solche Aufgaben eigentlich immer selbst, aber dieses mal komme ich echt nicht weiter mit dem Quellcode.

0