Zahlen tauschen
-
Mal ein Wort zur Einleitung:
Ein Kumpel hat gerade seine erste Woche Studium Wirtschaftinformatik hinter sich. Hat nun 4 Aufgaben bekommen. 3 konnt ich problemlos auch ohne Studium lösen
(Binomialkoeffizent,Upper Case,Decimal->Binär).Nun die Vierte:
Es sollen zwei Zahlen ohne Hifsvariable, sondern mit Hilfe von logischen oder arithmetischen Operatoren getauscht werden.
Und das Problem:
Ich find keinen Ansatz
Wäre nicht schlecht wenn jemannt mal nen Hinweis geben könnte. Wer 'nen Spoiler[Komplettlsg.] postet, bitte der Hintergrundfarbe anpassen. Brauch' halt bloß erstmal nen Hinweis.
MfG
mnhg
-
mist, du wolltest keine lösung
denk mal an bitverknüpfung.. damit kannst du es machen, als variante 1.
eine andere variante hat windalf mal gepostet. er kam nur mit arithmetischen mitteln aus. (spiel mal mit addition und substraktion rum)ach, ich poste dir doch den entsprechenden link.
du brauchst ja nicht draufzuschauen
http://www.c-plusplus.net/forum/viewtopic.php?t=72113&postdays=0&postorder=asc&highlight=variante+swap&start=10&sid=df5372bc65cc72473796abe690b48f45
-
Den Beitrag mit dem Query 'Bitverknüpfung' zu übersehn ist unmöglich.
Aber damit hab ich auch ne arithmetische Lösung, muss man erstmal drauf kommen.
Kennts du ne Addy wo ich in paar Informationen zu Bitverknüfungen finde. Da ich mein C aus Tutorials lerne und ich das noch nie benötigt hab, hab ich keine Ahnung von.
-
im grunde wie in technischer informatik die und/oder/xor/etc.. verknüpfungen
http://www.pronix.de/modules/C/openbook/c_programmierung_9.php#5
-
#include <stdio.h> int main(void) { int a = 23, b = 27331; printf("a = %d, b = %d\n", a, b); a ^= b; b ^= a; a ^= b; printf("a = %d, b = %d\n", a, b); }
-
a^=b^=a^=b;
Danke, steht aber schon in dem anderem Thread. Und dank des Links hab ich es auch verstanden
[CLOSE]
-
mnhg schrieb:
a^=b^=a^=b;
Undefiniertes Verhalten.
-
das geht aber eigentlich mit allen Grundrechenarten.
a = a + b;
b = -( b - a);
a = a - b;oder seh ich das jetz falsch ?
-
Daniel E. schrieb:
mnhg schrieb:
a^=b^=a^=b;
Undefiniertes Verhalten.
Nein. Zuweisungen sind rechtsassoziativ.
@DocJunior: Mathematisch ist das richtig, aber auf die Art kriegst du mit dem Computer Probleme, wenn dir die Variable überläuft.
-
0xdeadbeef schrieb:
Daniel E. schrieb:
mnhg schrieb:
a^=b^=a^=b;
Undefiniertes Verhalten.
Nein. Zuweisungen sind
... keine Sequenzpunkte. Wie oft wird a verändert? Eben, eben.
-
Ach, stimmt - du hast natürlich recht. Hab ich mir wohl die Hirnwindungen in die falsche Richtung verrenkt...
-
Daniel E. schrieb:
0xdeadbeef schrieb:
Daniel E. schrieb:
mnhg schrieb:
a^=b^=a^=b;
Undefiniertes Verhalten.
Nein. Zuweisungen sind
... keine Sequenzpunkte. Wie oft wird a verändert? Eben, eben.
Erklär mir mal was du meinst
-
-
danke