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

هل ال (temp)شرط أساسي في عملية تبديل رقمين

مغلق
بدأه الأحمري في 22 نوفمبر 2007 · 4 رد · 752 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أخواني هل يمكننا أن نعمل عملية تبديلين رقمين مكان بعضهما (swap) بشرط عدم إستخدام المتغير (temp) ؟

وإذا كان كذلك فما هو البرنامج المناسب

مع ألف شكر

#2

عتقد بهذه الطريقه

int x = 5;

int y = 7;

x = x + y;

y = x - y;

x = x - y;

#3

هذه الطريقة التي ذكرها الأخ عبد السلام

تعاني مشكلة كبيرة

والتي هي الـ overloading

بمعنى أن تحصل على carryout في البت الأخير عند التخزين

هذا يعني أنك ستحصل على نتيجة خاطئة تماماً

لذلك فإنه من المستحسن استخدام علمية XOR بدلاً منها

بالنسبة لهذه العملية فإنها تستبدل الجمع والطرح على حد سواء

في المعادلات التي ذكرها الأخ عبد السلام

الله معكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4
		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 بعد ما اتحط فيها القيمة الجديدة

#5

يبدو أني تسرعت قليلاً في الحكم

فالزيادة التي صارت في الحمل من عملية الجمع ستذهب بزيادة أخرى في عملية الطرح

اعتذر للأخ عبد السلام و لجميع الأخوة على هذا الخطأ

لكن أظن أن عملية xor تظل أسرع على المعالج

متأسف مرة أخرى على تحليلي المتسرع

وشكراً للأخ عمر على التصحيح

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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

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