The Cpp

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

6 ردود في هذا الموضوع

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

اللغز هو:

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

مثلا:

x = 5 y = 7

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

x = 7 y = 5

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

x ^= y ^= x ^=y;

يعني

x = x ^ y;
y = x ^ y;
x = x ^ y;

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

a=a*b

b=a/b

a=a/b

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

لعمل 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;

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .