Najprostszym sposobem jest wykorzystanie dodawania i odejmowania liczb. Oczywiście w umiejętny sposób będziemy wykonywać te działania. Algorytm bazuje na zauważeniu jak się mają dwie liczby przeciwne do siebie oraz wykorzystuje własności liczb na osi liczbowej.
Przykładowy kod rozwiązujący to zagadnienie w ten sposób :
Niestety operacje zarówno dodawania jak i odejmowania nie są zbytnio wydajne. Należy również zwrócić uwagę na fakt wczytania do zmiennych zbyt dużych liczb które mieszczą się w danym typie lecz po zastosowaniu operacji arytmetycznych mogą spowodować przepełnienie wartości zmiennej i tym samym zakłamanie wyniku.
Lepszym pomysłem będzie wykorzystanie do zamiany wartości zmiennych, alternatywy wykluczającej czyli inaczej zwanej funkcją logiczną XOR. Funkcja ta jest prawdziwa tylko w przypadku gdy mamy dwa różne znaki np 1 i 0 lub 0 i 1. W pozostałych przypadkach jest fałszywa. Tabelka poniżej ilustruje działanie funkcji XOR.
A | B | Y |
---|---|---|
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
W języku C++ funkcja XOR jest realizowana za pomocą operatora '^'.
Przykładowy program zamieniający wartości wykorzystujący funkcję XOR
Brak komentarzy:
Prześlij komentarz