Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

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

المطلوب

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


إرشادات

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

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

جرب الكود


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