إعلان
تعلم الآن

الخوارزميات حساب قيمة الـ Factorial للعدد - التمرين السابع

المطلوب

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


إرشادات

  1. S هو المتغير الذي سيحتوي على مجموع كل الأرقام الموجودة من 1 إلى N.
  2. i هو المتغير (العداد) الذي يزيد واحد في كل دورة.
  3. F هو المتغير الذي نخزن فيه الـ Factorial لقيم العداد i.
  4. N هو المتغير الذي يخزن العدد الذي سيدخله المستخدم و الذي تتوقف عنده الحلقة.
  5. الحلقة تبدأ من 1 و تتوقف عند N, أي عند العدد الذي أدخله المستخدم.
  6. إذا أدخل المستخدم عدد مفرد, ستتوقف الحلقة عند
  7. و إذا أدخل عدد مزدوج, ستتوقف الحلقة عند

إنتبه: يجب تعريف المتغيرين S و F كـ double حتى لا نخسر أي رقم موجود بعد الفاصلة أثناء إجراء عمليات القسمة.


النتيجة المطلوبة

لنفترض أن المستخدم أدخل العدد 7.

طريقة التحليل

الخوارزمية

كود الجافا

import java.util.Scanner;
 
public class Factorial {
 
    public static void main (String[] args) {
 
        Scanner input = new Scanner(System.in);
 
        int N;
        double F;
        double S = 0;
 
        System.out.print("Enter a number For N : ");
        N = input.nextInt();
 
        for (int i=1; i<=N; i++)
        {
            if (i%2 == 1)
            {
                S = S + i;
            }
            else
            {
                F = 1;
                for (int k=1; k<=i; k++)
                {
                    F = F * k;
                }
                S = S + (1/F);
            }
        }
 
        System.out.print("S = " +S+ "\n");
 
    }
 
}
		

شرح الكود


		int N;
		double F;
		double S = 0;
			
  • هنا قمنا بتجهيز المتغير N لتخزين الرقم الذي سيدخله المستخدم.
  • و المتغير F لتخزين الـ Factorial لكل قيمة من قيم العداد i الذي سنستخدمه في الحلقة.
  • و المتغير S لتخزين المجموع النهائي.


		System.out.print("Enter a number for N: ");
		N = input.nextInt();
			
  • هنا طلبنا من المستخدم إدخال عدد, ثم وضعناه في المتغير N.


		for (int i=1; i<=N; i++)
		{
			if (i%2 == 1)
			{
				S = S + i;
			}
			else
			{
				F = 1;
				for (int k=1; k<=i; k++)
				{
					F = F * k;
				}
				S = S + (1/F);
			}
		}
			
  • هنا في كل دورة من دورات الحلقة i سيحدث التالي:
    • إذا كانت قيمة العداد i عبارة عن عدد مفرد, سيتم إضافتها مباشرةً على قيمة المتغير S.
    • إذا كانت قيمة العداد i عبارة عن عدد مزدوج, سيحدث التالي:
      • سيتم وضع القيمة 1 كقيمة أولية للمتغير F لأننا سنستخدم هذا المتغير لتخزين قيمة الـ Factorial للعداد i.
      • بعدها, سيتم إنشاء حلقة داخلية تبدأ من 1 إلى قيمة العداد i الحالية بهدف حساب قيمة الـ Factorial للعداد i و تخزينها في المتغير F بشكل مؤقت.
      • بعد أن أصبحت قيمة الـ Factorial للعداد i مخزنة في المتغير F, سيتم قسم 1 على قيمة المتغير F.
        الناتج من عملية القسمة سيتم إضافته على قيمة المتغير S.


		System.out.print("S = " +S+ "\n");
			
  • في الأخير سيتم عرض القيمة النهائية المخزنة في المتغير S.

نصيحة

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

إعلان
دورة قواعد بيانات MySQL في هذه الدورة ستتعلم أساسيات قواعد البيانات و أوامر SQL، العلاقات (Join) بين الجداول، Normalization مع تطبيق مشروع متكامل. سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 600 ريال
سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 600 ريال
تعلم الآن

نرجو منك الإنتقال لدورة البرمجة للمبتدئين الجديدة التي أنشأنها كبديل أفضل لهذه الدورة ففي تلك الدورة قمنا بتبسيط الشرح أكثر و جعلناك قادر على تجربة الكود بشكل مباشر في موقعنا.

دورة تعلم البرمجة للمبتدئين >


الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة