أساسيات البرمجةحساب قيمة العاملي للعدد - التمرين التاسع
المطلوب
أكتب برنامج يطلب من المستخدم إدخال قيمة n
ثم يعرض له ناتج جمع الأعداد الفردية و الزوجية الموجودة من 1
إلى n
على النحو التالي.
إرشادات
s
هو المتغير الذي سيحتوي على المجموع النهائي لكل عمليات الجمع لهذا وضعنا فيه0
كقيمة أولية.n
هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف الحلقة عنده.i
هو المتغير (العداد) الذي يزيد واحد في كل دورة الحلقة التي سننشئها من1
إلىn
.f
هو المتغير الذي سنخزن فيه قيمة العاملي لكل قيمة من قيم العدادi
.- في كل دورة من دورات الحلقة
i
إذا كانت قيمته فردية سيتم إنقاصi + (i+1)!
من قيمةs
و إذا كانت قيمته زوجية سيتم زيادةi + (i+1)!
على قيمة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
لم نضع طريقة تحليل هذا الكود لأنه يفترض بك أن تتمكن من تحليله بنفسك.