حساب قيمة العاملي للعدد في البرمجة - التمرين التاسع

المطلوب

أكتب برنامج يطلب من المستخدم إدخال قيمة n ثم يعرض له ناتج جمع الأعداد الفردية و الزوجية الموجودة من 1 إلى n على النحو التالي.


إرشادات

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

Enter n: 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 وقت التشغيل.

Enter n: 4
s = 102

جرب الكود

لم نضع طريقة تحليل هذا الكود لأنه يفترض بك أن تتمكن من تحليله بنفسك 🙂