Yehia Amin2 نشر السبت في 14:35 أرسل تقرير نشر السبت في 14:35 السلام عليكم ورحمة الله وبركاته التحدي هو كالاتى write a javascript program to check two numbers and return true if one of the number is 100 or if the sum of two numbers is 100 ولقد فكرت وكتبت الكود التالى ولكن الكود دائما يرجع قيمة true ???!!!!! ما السبب وكيف يمكن الحل؟؟؟؟؟؟؟؟!!!!!!!!!! let X = 5; let Y = 9; if (X || Y === 100 || Y + X === 100) { console.log(true); } else { console.log(false); } 3 اقتباس
0 Abdulrahman Muhammad نشر السبت في 14:52 أرسل تقرير نشر السبت في 14:52 وعليكم السلام ورحمة الله وبركاته المشكلة مرتبطة بطريقة عمل العامل المنطقي " || " في JavaScript لاحظ هذا السطر : X || Y === 100 أنت لم تطلب من JavaScript أن تتحقق هل X يساوي 100 بل وضعت المتغير X وحده داخل الشرط وأي رقم غير 0 في JavaScript يعتبر قيمة true وهذا السطر يتحقق من قيمة المتغير X فإذا كانت true سيتم تحقيق الشرط وبالتالي سيرجع الكود قيمة true لذلك قم بكتابة المقارنة بشكل كامل لكل متغير كالتالي : let X = 5; let Y = 9; if (X === 100 || Y === 100 || X + Y === 100) { console.log(true); } else { console.log(false); } بهذه الطريقة أصبح الشرط واضحا هل X يساوي 100, أو هل Y يساوي 100, أو هل مجموعهما يساوي 100 بالتوفيق إن شاء الله. 1 اقتباس
0 محمد عاطف25 نشر السبت في 18:51 أرسل تقرير نشر السبت في 18:51 وعليكم السلام ورحمة الله وبركاته . أنصحك في الشروط المتداخله أن تضع كل شرط منفصل بداخل أقواس وذلك لتسهيل القراءة ولتفادي وإكتشاف الأخطاء بسهولة . الخطأ لديك هنا : بتاريخ 4 ساعة قال Yehia Amin2: X || Y === 100 هنا أنت إستخدمت العامل || مع المتغيرين X و Y وهذا خطأ حيث نتيجة الشرط ستكون 5 وهذا لأن في لغة جافاسكريبت معامل أو المنطقي (||) لا يعيد دائما true أو false بل يعيد أول قيمة يجدها صحيحة منطقيا (Truthy) عند القراءة من اليسار إلى اليمين. فعندما يبدأ جافاسكريبت بتقييم التعبير X || Y === 100، فإنه ينظر أولا إلى X. قيمة X هنا هي 5. في جافاسكريبت أي رقم باستثناء الصفر يعتبر قيمة صحيحة منطقياً (Truthy). بمجرد أن يجد الكود أن X قيمة صحيحة فإنه يتوقف فورا عن قراءة باقي السطر ويعيد القيمة 5 مباشرة ولا يهتم إطلاقا ب Y === 100. ولهذا فإن الشرط سيكون دائما ب true لأن أول جزء يعيد 5 دائما . والصحيح هو أننا نريد أن نقيم أن X و Y يساوي كل منها 100 إذا سيكون الشرط كالتالي : if ( (X === 100) || (Y === 100) || (Y + X === 100) ) { اقتباس
0 ياسر مسكين نشر السبت في 22:34 أرسل تقرير نشر السبت في 22:34 وعليكم السلام ورحمة الله تعالى وبركاته، الخطأ في هذا الجزء من الشرط: X || Y === 100 فعندما تكتب X وحده بجانب || فأنت هنا لا تطلب من JavaScript مقارنة X بالرقم 100، بل تضعه كقيمة منطقية مستقلة وبما أن X = 5، وأي رقم غير صفر يعدّ true في JavaScript، فإن الشرط يتحقق فورا ويتوقف عن تقييم باقي الشرط، ولهذا يعود الكود ب true دائما بغض النظر عن القيم ولحل المشكلة يجب كتابة المقارنة كاملة لكل متغير على حدة كالتالي: let X = 5; let Y = 9; if (X === 100 || Y === 100 || X + Y === 100) { console.log(true); } else { console.log(false); } وهكذا سيتم التحقق من ثلاثة أشياء بشكل صحيح: هل X يساوي 100؟ هل Y يساوي 100؟ هل مجموع X + Y يساوي 100؟ وبما أن X = 5 و Y = 9، لا يتحقق أي شرط، فسيطبع false كما هو المطلوب. اقتباس
0 عبدالباسط ابراهيم نشر الأحد في 10:36 أرسل تقرير نشر الأحد في 10:36 كما تم التوضيح في التعليقات السابقة فإن المشكلة تكمن في طريقة كتابتك للشرط الأول وطالما أنك تريد اختصار هذه الشروط قليلاً فيمكنك إنشاء قائمة ثم وضع كل الاحتمالات بها ومقارنتها بالرقم 100 كالتالي let X = 5; let Y = 9; if ([X, Y, X + Y].includes(100)) { console.log(true); } else { console.log(false); } اقتباس
السؤال
Yehia Amin2
السلام عليكم ورحمة الله وبركاته التحدي هو كالاتى
write a javascript program to check two numbers and return true if one of the number is 100 or if the sum of two numbers is 100
ولقد فكرت وكتبت الكود التالى ولكن الكود دائما يرجع قيمة
true
???!!!!! ما السبب وكيف يمكن الحل؟؟؟؟؟؟؟؟!!!!!!!!!!
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.