|
شو الظاهر بعدين ما عرفت كيف تحل المسألة 
الحل كالآتي :
نحنا بدنا نبدل بين رقمين في خانتين ..
سنفترض الرقمين هما مثلا : 3 و 5 .. والمتحولان المستخدمان هما a و b
فبداية نسند قيمتي الخانتين :
a=3
b=5
حسنا ... نريد الآن التبديل بين الرقمين بدون استخدام الوسطاء .. لك كيف ؟؟
سنقوم بحيلة ذكية .. ألا وهي سنقوم عن طريق الجمع والطرح بتبديل القيمتين ...
أولا : سنقوم بجمع القيمتين a و b ونضع قيمة النتيجة في a فيكون :
a=a+b
ماذا حدث هنا ؟؟
الذي حدث هو أنه وضعنا ناتج جمع الرقمين 3+5 في الخانة الأولى a فتغيرت قيمة a من 3 إلى 8 .. فهي الآن تحمل ناتج الجمع بينما قيمة الخانة b ما زالت موجودة ..
حاليا : a=8 و b=5
ثانيا : سنقوم الآن بالطرح ما بين الخانتين a و b .. لكن هذه المرة سنحتفظ بناتج الطرح في الخانة الثانية b .. لأننا نريد الاحتفاظ بقيمة الجمع السابقة للخطوة التالية فيكون :
b=a-b
فيكون الناتج : a=8 و b=3
إذا لاحظنا .. لقد استطعنا جعل الخانة b تحمل القيمة المراد تبديلها والتي كانت بحوذة a سابقا .. وبقي لدينا مهمة واحدة .. حمل a للقيمة السابقة لـ b ... وهذا ما تفسره الخطوة الأخيرة .
ثالثا : نقوم بالطرح ما بين a و b .. والقيمة الجديدة ستكون ملك الخانة a ..
إذا لاحظنا .. احتفظنا بقيمة ناتج الجمع في الخطوة الأولى لنجد ضالتنا هنا . حيث أننا استطعنا بعملية الطرح الحصول على القيمتين الذين تم جمعهما .. وذلك مرة بالطرح بالرقم الأول للحصول على الثاني .. وطرحنا الرقم الثاني للحصول على الأولى .. ملعوبة يعني !!
وبذلك يكون : a=a-b
ومع الملاحظة في التعليمة الأخيرة .. إن المترجم سيقرأ قيمة a القديمة أولا .. اي سيرى القيمة ( 8 ) قبل تغير قيمة a إلى القيمة الجديدة .. لأن الأولية تكون عند الإسناد للطرف اليساري .. وبذلك عند الطرح سيتم طرح ( 3 ) من ( 8 ) ونحصل على قيمة b السابقة ..
والناتج a=5 و b=3
وبذلك يتم المطلوب ...
الخوارزمية بشكلها البسيط :
a=a+b
b=a-b
a=a-b
ملحوظة : جربها على أي مثال بدك ياه .. ولازم تظبط ..
|