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

الخوارزميات التعامل مع المصفوفة ذات البعد الواحد - التمرين السابع

المطلوب

هذا التمرين مقسّم إلى أربع أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.

  1. أكتب برنامج يعرّف ثلاث مصفوفات A و B و C.
  2. ثم يطلب من المستخدم إدخال العدد الذي يمثل عدد عناصر المصفوفتين A و B.
  3. بعدها يطلب من المستخدم إعطاء قيم للمصفوفتين A و B و يخزنهم في المصفوفة C.
  4. في الأخير يعرض للمستخدم القيم التي أصبحت تحتويها المصفوفة C.

إرشادات

يجب أن يتم جمع قيم عناصر المصفوفتين A و B في المصفوفة C كالتالي.


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

لنفترض أن المستخدم أراد حجم المصفوفتين A و B يساوي 4 و أدخل نفس القيم كما في الصورة السابقة.

الخوارزمية

كود الجافا

import java.util.Scanner;
 
public class Vector {
 
    public static void main (String[] args) {
 
        Scanner input = new Scanner(System.in);
 
        int N;
        int[] A;
        int[] B;
        int[] C;
        int k = 0;     // C سنستخدم هذا المتغير كعداد للوصول لعناصر المصفوفة
 
        do
        {
            System.out.print("Enter the length for vectors ( A ) and ( B ): ");
            N = input.nextInt();
        }
        while ( N <= 0 );
 
        A = new int[N];
        B = new int[N];
        C = new int[N*2];
 
        System.out.print("\n");
 
        for (int i=0; i<=N-1; i++)
        {
            System.out.print("Enter A[" +i+ "]: ");
            A[i] = input.nextInt();
 
            System.out.print("Enter B[" +i+ "]: ");
            B[i] = input.nextInt();
        }
 
        System.out.print("\n");
 
        for (int i=0; i<=N-1; i++)
        {
            C[k] = A[i];
            C[k+1] = B[i];
 
            k = k+2;
        }
 
        System.out.print("\n");
 
        for (int i=0; i<=(N*2)-1; i++)
        {
            System.out.print("C[" +i+ "]: " + C[i] +"\n");
        }
 
        System.out.print("\n");
 
    }
 
}
		

شرح الكود


		int N;
		int[] A;
		int[] B;
		int[] C;
		int k = 0;
			
  • هنا قمنا بتجهيز المتغير N لتخزين عدد عناصر المصفوفتين A و B و هو أول شيء سيطلب من المستخدم إدخاله.
  • و المصفوفات A و B و C لم نحدد عدد عناصرهم.
  • و المتغير k الذي أعطيناه القيمة 0 كقيمة أولية لأننا سنستخدمه كعداد للوصول إلى عناصر المصفوفة C.


		do
		{
			System.out.print("Enter the length for vectors ( A ) and ( B ): ");
			N = input.nextInt();
		}
		while ( N <= 0 );
			
  • هنا سيطلب من المستخدم إدخال عدد عناصر المصفوفتين A و B, بعدها سيتم تخزينه في المتغير N.
  • بعدها سيتم فحص قيمة المتغير N, إذا كانت أصغر أو تساوي 0 سيطلب من المستخدم إدخال العدد من جديد.
  • إذاً هذه الحلقة تضمن أن لا يقوم المستخدم بإدخال عدد أصغر أو يساوي 0.


		A = new int[N];
		B = new int[N];
		C = new int[N*2];
			
  • هنا سيتم تحديد عدد عناصر المصفوفات الثلاثة كالتالي:
    • عدد عناصر المصفوفتان A و B يساوي قيمة المتغير N.
    • عدد عناصر المصفوفة C يساوي عدد عناصر المصفوفتين A و B مع بعض, أي يساوي قيمة المتغير N*2.
      ملاحظة: عدد عناصر المصفوفة C يمكن تحديدها بأكثر من طريقة, فمثلاً يمكنك أن تكتب N+N أو A.length + B.length بدل N*2.


		for (int i=0; i<=N-1; i++)
		{
			System.out.print("Enter A[" +i+ "]: ");
			A[i] = input.nextInt();
		
			System.out.print("Enter B[" +i+ "]: ");
			B[i] = input.nextInt();
		}
			
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في كلا المصفوفتين (أي العنصر رقم 0) إلى آخر عنصر موجود فيهما و الذي يملك الـ index الأخير, (أي N-1).
  • في كل دورة من دورات الحلقة i سيطلب من المستخدم إدخال قيمة لعنصر في المصفوفة A, و قيمة لعنصر في المصفوفة B.
    فمثلاً, عندما تكون قيمة العداد i تساوي 0 سيطلب منه إدخال قيمة للعنصر A[0] و قيمة للعنصر B[0].


		for (int i=0; <=N-1; i++)
		{
			C[k] = A[i];
			C[k+1] = B[i];
		
			k = k+2;
		}
			
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في كل المصفوفات (أي العنصر رقم 0) إلى آخر عنصر موجود في المصفوفات و الذي يملك الـ index الأخير (أي N-1).
  • في كل دورة من دورات الحلقة i سيحدث التالي في المصفوفة C من خلال العداد k:
    • سيتم وضع قيمة عنصر المصفوفة A في عنصر جديد في المصفوفة C.
    • ثم وضع قيمة عنصر المصفوفة B في العنصر التالي في المصفوفة C.
    • ثم سيتم زيادة قيمة المتغير k إثنين لتجاوز الخانتين السابقتين اللتين تم وضع القيم فيهما.
    • طريقة عمل الكود:
      • في البداية, قيمة العداد i تساوي 0 لذلك سيتم وضع قيمة العنصر A[0] في العنصر C[0], ثم قيمة العنصر B[0] في العنصر C[1].
      • بعد أن تم إضافة 2 على قيمة المتغير k و أصبحت قيمة العداد i تساوي 1 سيتم وضع قيمة العنصر A[1] في العنصر C[2], ثم قيمة العنصر B[1] في العنصر C[3].
      • بعد أن تم إضافة 2 على قيمة المتغير k و أصبحت قيمة العداد i تساوي 2 سيتم وضع قيمة العنصر A[2] في العنصر C[4], ثم قيمة العنصر B[2] في العنصر C[5].
      • بعد أن تم إضافة 2 على قيمة المتغير k و أصبحت قيمة العداد i تساوي 3 سيتم وضع قيمة العنصر A[3] في العنصر C[6], ثم قيمة العنصر B[3] في العنصر C[7].
      • مهما كان حجم المصفوفات فإن الكود سيعمل بنفس الطريقة.


		for (int i=0; i<=(N*2)-1; i++)
		{
			System.out.print("C[" +i+ "]: " + C[i] +"\n");
		}
			
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة C إلى آخر عنصر موجود فيها بهدف عرض قيمة كل عنصر أصبح فيها.
  • في كل دورة من دورات الحلقة i سيطبع للمستخدم أن العنصر رقم كذا قيمته كذا.
إعلان
دورة قواعد بيانات MySQL في هذه الدورة ستتعلم أساسيات قواعد البيانات و أوامر SQL، العلاقات (Join) بين الجداول، Normalization مع تطبيق مشروع متكامل. سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 600 ريال
سعر الدورة الآن هو 20 ريال سعودي فقط بدلاً من 600 ريال
تعلم الآن

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

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


الدورات

أدوات مساعدة

أقسام الموقع

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