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

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

المطلوب

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

  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 سيطبع للمستخدم أن العنصر رقم كذا قيمته كذا.

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


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