Tausche zwei ganze Zahlen, ohne eine dritte Variable zu verwenden

8

Ich habe eine Zuweisung, in der ich zwei ganze Zahlen ohne dritte Variable tauschen muss. Ich bin mir nicht sicher, wie ich das machen soll. Wie würde ich das programmieren?

    
emerald 27.04.2012, 11:51
quelle

9 Antworten

18

Ja, es ist möglich:

%Vor%

Aber warum brauchen Sie es? Der Code wird abstrus.

    
Tim Schmelter 27.04.2012 11:58
quelle
7

Nehmen wir an

%Vor%

Werte vertauscht.

    
Paul Grimshaw 27.04.2012 11:56
quelle
5

Lesen Sie den xor- oder swap-Algorithmus . "

Hier finden Sie eine Antwort:

Ссылка

%Vor%     
jon 27.04.2012 11:57
quelle
3
%Vor%     
Prashanth Thurairatnam 27.04.2012 12:04
quelle
2

So tauschen Sie zwei numerische Variablen aus:

%Vor%

ODER

%Vor%

wobei a und b zu vertauschende Variablen sind

    
Jainendra 27.04.2012 11:57
quelle
0

Die obigen Xor- oder a + b-Algorithmen funktionieren und sind der beste Weg, dies zu tun, aber nur ein Beispiel für eine seltsame Art und Weise, dies zu tun. Noch immer nicht sicher, warum du das machen willst. Erstellen Sie einfach eine Funktion, die Sie zwei Werte ByRef liefern und lassen Sie die Standard-Swap-Methode tun.

%Vor%     
APrough 27.04.2012 12:31
quelle
0
%Vor%     
ras123 06.08.2014 23:54
quelle
0

theoretisch 3 Wege

%Vor%

1. Verwenden von XOR

%Vor%

2. Mit +, -

%Vor%

3. Verwenden Sie *, /

%Vor%     
x-coder 18.12.2014 18:13
quelle
0

Überprüfen Sie den für Sie geschriebenen Link

Ansatz # 1.

Additions- und Subtraktionsmethode

%Vor%

Problem:

Falsches Ergebnis, wenn die Summe der Zahlen den Ganzzahlbereich überschreitet.

Ansatz # 2.

Multiplikations- und Divisionsmethode

%Vor%

Probleme:

  1. Wenn der Wert von a * b den Bereich von integer überschreitet.
  2. Wenn der Wert von a oder b gleich Null ist, liefert es falsche Ergebnisse.

Ansatz # 3.

XOR-Methode

%Vor%

Der beste Ansatz, um dieses Problem ohne Fehler zu lösen.

    
Raj Dixit 27.02.2016 03:07
quelle

Tags und Links