الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لغز بسيط(swap لمتغيرين بدون متغير ثالث )

مغلق
بدأه The Cpp في 29 ديسمبر 2005 · 5 رد · 1,025 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لغز بسيط أتمنى ما يكون متكرر

اللغز هو:

نريد عمل swap بين عددين صحيحين بدون متغير ثالث وفي جملة واحدة فقط

مثلا:

x = 5 y = 7

بعد الجملة هذي راح يكون

x = 7 y = 5

abofahad5515@hotmail.com

#3

لعمل swap بين عددين دون استخدام متغير ثالث او استخدام دالة

يمكن عمل ذلك رياضياَ

اذا كان لدينا العددين a=5,b=10 تكون العملية كتالي

a=a*b

b=a/b

a=a/b

بعد ذلك تكون قيمة a=10,b=5

#4
NAE كتب:
لعمل swap بين عددين دون استخدام متغير ثالث او استخدام دالة

يمكن عمل ذلك رياضياَ

اذا كان لدينا العددين a=5,b=10 تكون العملية كتالي

a=a*b

b=a/b

a=a/b

بعد ذلك تكون قيمة a=10,b=5

هي مطلوبة في جملة واحدة

اقتباس
نريد عمل swap بين عددين صحيحين بدون متغير ثالث وفي جملة واحدة فقط
لهذا يمكن كتابتها بهذا الشكل

  a /= b = (a *=b) / b;

ولكن عملية الضرب بطيئة وعملية القسمة بطيئة أكثر منها , والأسرع استخدام العمليات المنطقية , والعملية xor تقوم بالغرض في وقت أقل

يمكن عمل الوظيفة نفسها باستخدام الجمع والطرح أيضا , فهي اسرع بكثير من عمليتي الضرب والقسمة

a -= b = (a +=b) - b;
#5

شكرا للأخ Asm4all وللأخ NAE على المشاركة والحل صحيح وهذا حل كتبته انا

x  =  y   +  x   -   (y = x);

abofahad5515@hotmail.com

#6
/index.php?showtopic=67138

MPSI/MP* - CPR Tanger

هذا الموضوع مغلق.

مواضيع مشابهة