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