Module: सबरूटीन्स: प्रक्रियाएं और कार्य - 1


Problem

11/11

बदलते तर्क

Theory Click to read/hide

कार्य
एक ऐसी प्रक्रिया लिखें जो दो वेरिएबल्स के मानों की अदला-बदली करे।

इस कार्य की ख़ासियत यह है कि हमें कॉलिंग प्रोग्राम के बारे में जानने के लिए प्रक्रिया में किए गए परिवर्तनों की आवश्यकता है।

आइए प्रक्रिया को इस तरह लिखने का प्रयास करें: स्थैतिक शून्य स्वैप (इंट ए, इंट बी) // प्रक्रिया मापदंडों के इस तरह के विवरण के साथ, { // तर्कों के मूल्यों की नकल करेगा (x और y) इंट सी; // चर ए और बी स्वतंत्र चर हैं जो एक्स और वाई से संबंधित नहीं हैं सी = ए; ए = बी; बी = सी; } स्थिर शून्य मुख्य () { int x=1, y=2; स्वैप (एक्स, वाई); // चर x और y (तर्क) के मान पैरामीटर a और b, x = 1, y = 2 में कॉपी किए गए हैं } यदि आप इस प्रोग्राम को चलाते हैं, तो आप देख सकते हैं कि x और y चर के मान नहीं बदले हैं। मापदंडों के लिए तर्कों के मूल्यों को बदलने के लिए, आपको संदर्भ से गुजरने वाले डेटा का उपयोग करना होगा। ऐसा करने के लिए, सबरूटीन के हेडर में डेटा प्रकार के नाम से पहले, आपको रेफरी लिखना होगा शून्य स्वैप (रेफरी इंट ए, रेफ इंट बी) // अब वेरिएबल्स ए और बी मेमोरी में वेरिएबल्स एक्स और वाई के पते प्राप्त करते हैं { इंट सी; सी = ए; ए = बी; बी = सी; } स्थिर शून्य मुख्य () {   int x=1, y=2;   स्वैप (रेफरी एक्स, रेफ वाई); अनुप्रयोग: यदि आप संदर्भ द्वारा एक तर्क पास करते हैं, तो प्रक्रिया को कॉल करते समय केवल चर का नाम (संख्या नहीं और अंकगणितीय अभिव्यक्ति नहीं) इस स्थान पर खड़ा हो सकता है।

आप इस तरह की प्रक्रिया नहीं कह सकते हैं: <पूर्व> स्वैप (एक्स, 4); स्वैप (5+x, y);

Problem

ऐसी प्रक्रिया लिखें जो दो चरों के मानों की अदला-बदली करे। इस प्रक्रिया में त्रुटियां खोजें और ठीक करें।
 
उदाहरण
<टेबल क्लास = "टेबल-एसएम टेबल-बॉर्डर टेबल-स्ट्राइप्ड टेबल-लिस्ट-टेस्ट"> <सिर> <थ वर्ग = "अंक"> # <वें>इनपुट <वें>आउटपुट <शरीर> 1 1
2 2
1