2012-04-27 21 views
8

मेरे पास एक असाइनमेंट है जिसमें मुझे तीसरे चर का उपयोग किए बिना दो पूर्णांक स्वैप करने की आवश्यकता है। मुझे यकीन नहीं है कि यह कैसे करें। मैं इसे कैसे कोड करूं?तीसरे चर का उपयोग किए बिना दो पूर्णांक स्वैप करें

+0

एक बेहतर तरीके से हमें यह समझाने की कोशिश करो और हो सकता है कि सही रास्ते पर आप डाल देंगे। – skyfoot

उत्तर

7

चलें मान

a = 10; 
b = 20; 

a = a + b; // a = 30 

b = a - b; // b = 10 
a = a - b; // a = 20 

मान बदली।

2

दो सांख्यिक चर इस

a = a + b; 
b = a - b; 
a = a - b; 

या

a = a xor b; 
b = a xor b; 
a = a xor b; 

जहां ए और बी की तरह कर स्वैप करने के लिए चर

+0

abstruse के लिए दो * संख्यात्मक * चर –

18

हाँ, यह संभव है बदली जाए:

Dim var1 = 1 
Dim var2 = 2 
var1 = var1 + var2 
var2 = var1 - var2 
var1 = var1 - var2 

लेकिन आप इसे ज़रूरत है? कोड abstruse हो जाता है।

+4

+1 स्वैप करने के लिए, अच्छा शब्द! – jon

3
Dim a As Integer 
Dim b As Integer 
a= 1 
b= 2 

a = a Xor b 
b = a Xor b 
a = a Xor b 
0

Xor या काम से ऊपर ए + बी एल्गोरिदम और यह करने के लिए सबसे अच्छा तरीका है, लेकिन सिर्फ यह करने के लिए एक अजीब तरीका का एक उदाहरण है। अभी भी यकीन नहीं है कि आप ऐसा क्यों करना चाहते हैं। बस एक फ़ंक्शन बनाएं जिसे आप दो मान ByRef की आपूर्ति करते हैं और यह मानक स्वैप विधि करते हैं।

Dim newList as New List(Of Integer) 
newList.Add firstvalue 
newList.Add secondValue 
newList.Reverse 
secondValue = newList.Item(0) 
firstValue = newList.Item(1) 
+1

अच्छा विचार, हालांकि 'newList' को तीसरे चर के रूप में माना जा सकता है। –

0
Take two text boxes and a command box.In command box type this code. 
    text1.text=val(text1.text) + val(text2.text)  
    text2.text=val(text1.text) - val(text2.text) 
    text1.text=val(text1.text) - val(text2.text) 
0

सैद्धांतिक रूप से 3 तरीके

a = 4 , b = 5 

1. XOR

a = a XOR b = 4 XOR 5 = 9  
b = a XOR b = 9 XOR 5 = 4 
a = a XOR b = 9 XOR 4 = 5 

2. का प्रयोग +, का उपयोग करना -

a = a+b = 4+5 = 9  // should not overflow 
b = a-b = 9-5 = 4 
a = a-b = 9-4 = 5 

3. का उपयोग *,/

a = a*b = 4*5 = 20 // should not overflow 
b = a/b = 20/5 = 4 // should not overflow and should not be irrational number 
a = a/b = 20/4 = 5 // should not overflow and should not be irrational number 
0

Check link written for you

कार्य # 1।

जोड़ और घटाव विधि

Integer a, b 
read a and b 
a= a+b; 
b=a-b; 
a=a-b; 

समस्या:

गलत परिणाम जब संख्याओं का योग पूर्णांक सीमा पार हो जाएगी।

कार्य # 2।

गुणा और भाग विधि

Integer a, b 
read a and b 
a=a*b; 
b=a/b; 
a=a/b; 

समस्याएं:

  1. तो एक * ख का मूल्य पूर्णांक की सीमा से अधिक है।
  2. तो एक या बी का मान शून्य है तो यह गलत परिणाम प्राप्त होंगे।

दृष्टिकोण # 3।

XOR विधि

Integer a , b 
read a and b 
a=a^b; 
b=a^b; 
a=a^b; 

बेस्ट दृष्टिकोण किसी भी नुकसान के बिना इस समस्या को हल करने के लिए।

संबंधित मुद्दे