السلام عليكم
أخواني هل يمكننا أن نعمل عملية تبديلين رقمين مكان بعضهما (swap) بشرط عدم إستخدام المتغير (temp) ؟
وإذا كان كذلك فما هو البرنامج المناسب
مع ألف شكر
السلام عليكم
أخواني هل يمكننا أن نعمل عملية تبديلين رقمين مكان بعضهما (swap) بشرط عدم إستخدام المتغير (temp) ؟
وإذا كان كذلك فما هو البرنامج المناسب
مع ألف شكر
عتقد بهذه الطريقه
int x = 5;
int y = 7;
x = x + y;
y = x - y;
x = x - y;
هذه الطريقة التي ذكرها الأخ عبد السلام
تعاني مشكلة كبيرة
والتي هي الـ overloading
بمعنى أن تحصل على carryout في البت الأخير عند التخزين
هذا يعني أنك ستحصل على نتيجة خاطئة تماماً
لذلك فإنه من المستحسن استخدام علمية XOR بدلاً منها
بالنسبة لهذه العملية فإنها تستبدل الجمع والطرح على حد سواء
في المعادلات التي ذكرها الأخ عبد السلام
الله معكم
System.out.println("Integer Max= "+Integer.MAX_VALUE);
int x = 2147483640;
int y = 2147483642;
System.out.println("X Before= "+x);
System.out.println("Y Before= "+y);
x = x + y;
System.out.println(x);
y = x - y;
x = x - y;
System.out.println("X After= "+x);
System.out.println("Y After= "+y);أخي علاء طريقة عبد السلام شغالة عادي
هي المشكلة بس لو انتا حبيت تطبع قيمة X في المنتصف وداه أعتقد انك مش هتحتاجه
انتا محتاج بس تعرف قيمة ال X بعد ما اتحط فيها القيمة الجديدة
يبدو أني تسرعت قليلاً في الحكم
فالزيادة التي صارت في الحمل من عملية الجمع ستذهب بزيادة أخرى في عملية الطرح
اعتذر للأخ عبد السلام و لجميع الأخوة على هذا الخطأ
لكن أظن أن عملية xor تظل أسرع على المعالج
متأسف مرة أخرى على تحليلي المتسرع
وشكراً للأخ عمر على التصحيح
هذا الموضوع مغلق.