समस्या विवरण
एक वेरिएबल a है जिसका मान x या y में से एक है। बिना किसी सशर्त ऑपरेटर (if, ternary, आदि) के, a को दूसरे मान में बदलें।
उदाहरण: a = 43, x = 43, y = 21 → आउटपुट: 21
समाधान 1: अंकगणितीय ऑपरेटर
a = x + y - a
या a = x * y / a (लेकिन गुणा/भाग महंगा है और त्रुटि दे सकता है)
उदाहरण कोड
#include <iostream>
using namespace std;
int main() {
int x = 45, y = 5;
int a = x;
cout << "Initial value of a is: " << a;
a = x + y - a;
cout << "\nAfter changing value of a is: " << a;
return 0;
}
आउटपुट
Initial value of a is: 45 After changing value of a is: 5
समाधान 2: बिटवाइज XOR ऑपरेटर
a = x ^ y ^ a
यह अधिक प्रभावी है क्योंकि XOR उलटा करने योग्य है।
उदाहरण कोड
#include <iostream>
using namespace std;
int main() {
int x = 56, y = 78;
int a = x;
cout << "Initial value of a is: " << a;
a = x ^ y ^ a;
cout << "\nAfter changing value of a is: " << a;
return 0;
}
आउटपुट
Initial value of a is: 56 After changing value of a is: 78