بدي مساعدتكن بسرعة (مسألة سي++)

زائر
أرسل من قبل زائر في الجمعة, 2007/09/07 - 4:09pm.

الجامعة: غير ذلك
الكلية: غير ذلك
المرحلة: دكتوراه
الاختصاص: غير ذلك

هاي شباب

بدي حل هي المسألة بالسي بلس بلس

استبدل قيم متغيرين دون استخدام وسيط

انا سنة اولى ...فيس حدا مستعد يساعدني باساسيات السي بلس بلس؟
و برأيكن اي مترجم بستخدم؟؟

شكراً

 
دخول أو تسجيل لإرسال التعليقات | قراءة: 414

خيارات عرض التعليقات

اختر طريقتك المفضلة لعرض التعليقات و اضغط "حفظ الإعدادات" لتفعيل تغييراتك.
الجمعة, 2007/09/07 - 4:36pm
عضو فعال
صورة Dr.Siko

تاريخ التسجيل: 2005-10-25
مشاركات: 944

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثالثة

شو الظاهر بعدين ما عرفت كيف تحل المسألة Very Happy

الحل كالآتي :

نحنا بدنا نبدل بين رقمين في خانتين ..

سنفترض الرقمين هما مثلا : 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

ملحوظة : جربها على أي مثال بدك ياه .. ولازم تظبط ..

 
دخول أو تسجيل لإرسال التعليقات
DR.haidora_25 (غير مختبر)
الجمعة, 2007/09/07 - 4:40pm

الجامعة: غير ذلك
الكلية: غير ذلك
المرحلة: دكتوراه
الاختصاص: غير ذلك

لك شكراً يا DR.SIKO

 
دخول أو تسجيل لإرسال التعليقات
السبت, 2007/09/08 - 1:18am
عضو فعال
صورة en.karam1989

تاريخ التسجيل: 2007-03-24
مشاركات: 2472

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الثانية

Remember : that I told you that it's an exam's question

 
دخول أو تسجيل لإرسال التعليقات
الإثنين, 2007/10/08 - 12:19am
صورة mubdi3ah

تاريخ التسجيل: 2007-09-25
مشاركات: 24

الجامعة: غير ذلك
الكلية: غير ذلك
المرحلة: السنة الثانية
الاختصاص: هندسة برمجيات

عندي مسأله وكمان حلها بس موووو فاهمتهاااااااا:(Sad

بعطيكم السؤااال Sad واااتمنى المساااعده Sad

5. Why does the following program print "The value of 1/3 is 0"? What must be done to this program to fix it?
#include
float answer; // the result of the divide
int main()
;answer = 1/3
std::cout <
return (0); }

اسفه في حوسه في التربيب بس ان شاء الله واضحه خخخخ

صعوبات و كفاحات اليوم ليست الا الثمن الذي يجب ان ندفعه من اجل انجازات وانتصارات الغد>>Smile

 
دخول أو تسجيل لإرسال التعليقات
الإثنين, 2007/10/08 - 12:45am
عضو فعال
صورة Renwar

تاريخ التسجيل: 2005-02-24
مشاركات: 895

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الخامسة
الاختصاص: هندسة برمجيات

حطي 1.0/3 مشان ما يصير قطع للقيمة

لخبط و شخبط عاللي فات و ابدأ و زبط من جديد Smile

 
دخول أو تسجيل لإرسال التعليقات
الإثنين, 2007/10/08 - 1:06am

تاريخ التسجيل: 2007-09-14
مشاركات: 57

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الرابعة
الاختصاص: هندسة برمجيات

هون يلي عم بصبر أنو عم يقسم int على int والجواب أكيد بقربو لـ int (بيطلع 0)بعدين بيعمل cast للـ float (بيطلع 0.0)مشان هيك منحط 1.0f/3 فيعمل cast للـ3 لتصير float مشان يقسم float على float وبيطلع الجواب float بيتحمل القيمة 1/3 بقوم بيمشي الحال

طبعاً ممكن نحط 1/3.0f نفس النتيجة


 
دخول أو تسجيل لإرسال التعليقات
الإثنين, 2007/10/08 - 9:28pm
صورة mubdi3ah

تاريخ التسجيل: 2007-09-25
مشاركات: 24

الجامعة: غير ذلك
الكلية: غير ذلك
المرحلة: السنة الثانية
الاختصاص: هندسة برمجيات

جزاكم الله خييييييييير Smile
Renwar
**********

UbaiSandouk مشكووووووور على التوضيح الرائع طيب ينفع احط البسط فلوت والمقام فلوت

1,0/3,0

هييييك ينفع او لازم واحد من السبط و المقام يصير فلوت
Smile

صعوبات و كفاحات اليوم ليست الا الثمن الذي يجب ان ندفعه من اجل انجازات وانتصارات الغد>>Smile

 
دخول أو تسجيل لإرسال التعليقات
الثلاثاء, 2007/10/09 - 8:46am
عضو فعال
صورة M-RAY-Y

تاريخ التسجيل: 2005-10-11
مشاركات: 770

الجامعة: دمشق
الكلية: الهندسة المعلوماتية
المرحلة: السنة الرابعة
الاختصاص: ذكاء صنعي

يفضل انو يكون البسط والمقام Float
بشكل عام لتحويل عدد ل Float بس اكتبي float(x) حيث x هو العدد المراد قصره ( تحويله بالعربي Smile )

C++ is Not a programming language ,
C++ is a Way Of Life

 
دخول أو تسجيل لإرسال التعليقات
الأربعاء, 2007/10/10 - 2:32am
صورة mubdi3ah

تاريخ التسجيل: 2007-09-25
مشاركات: 24

الجامعة: غير ذلك
الكلية: غير ذلك
المرحلة: السنة الثانية
الاختصاص: هندسة برمجيات

الله يوفقكم اخواني

صعوبات و كفاحات اليوم ليست الا الثمن الذي يجب ان ندفعه من اجل انجازات وانتصارات الغد>>Smile

 
دخول أو تسجيل لإرسال التعليقات