حساب قيمة العاملي للعدد في البرمجة - التمرين التاسع
المطلوب
أكتب برنامج يطلب من المستخدم إدخال قيمة n ثم يعرض له ناتج جمع الأعداد الفردية و الزوجية الموجودة من 1 إلى n على النحو التالي.
إرشادات
sهو المتغير الذي سيحتوي على المجموع النهائي لكل عمليات الجمع لهذا وضعنا فيه0كقيمة أولية.nهو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف الحلقة عنده.iهو المتغير (العداد) الذي يزيد واحد في كل دورة الحلقة التي سننشئها من1إلىn.fهو المتغير الذي سنخزن فيه قيمة العاملي لكل قيمة من قيم العدادiالتالية، أي لقيمةi + 1.- في كل دورة من دورات الحلقة
iإذا كانت قيمة العدادiفردية فإنه يجب إنقاصi + fمن قيمةsو في حال كانت قيمته زوجية فإنه يجب زيادةi + fعلى قيمةs.
الحل الأول
var n; var f; var s = 0; write("Enter n: "); n = read(); for (var i=1; i<=n; i++) { f = 1; for (var k=1; k<=i+1; k++) { f = f * k; } if (i%2 == 1) { s = s - (i + f); } else { s = s + (i + f); } } write("s = " + s);
النتيجة: ستكون كما يلي في حال تم إدخال العدد 4 وقت التشغيل.
s = 102
كان بإمكاننا من البداية استخدام متغير عادي و جعل قيمته تزداد في كل دورة بشكل تكون قيمته أكبر من قيمة المتغير i دائماً بواحد و على أساس قيمة هذا المتغير نقوم بحساب قيمة العاملي له و هكذا لا نضطر إلى استخدام حلقة خاصة لحساب قيمة العاملي.
في الحل التالي قمنا بتبديل الحلقة المخصصة لحساب العاملي بمتغير إسمه k و هذا الحل يعتبر أفضل من حيث الأداء.
الحل الثاني
var n; var f = 1; var s = 0; var k = 1; write("Enter n: "); n = read(); for (var i=1; i<=n; i++) { k++; f = f * k; if (i%2 == 1) { s = s - (i + f); } else { s = s + (i + f); } } write("s = " + s);
النتيجة: ستكون كما يلي في حال تم إدخال العدد 4 وقت التشغيل.
s = 102
لم نضع طريقة تحليل هذا الكود لأنه يفترض بك أن تتمكن من تحليله بنفسك 🙂