التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
جدول المحتويات
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع
المطلوب
هذا التمرين مقسّم إلى أربع أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.
- أكتب برنامج يعرّف ثلاث مصفوفات
A
وB
وC
. - ثم يطلب من المستخدم إدخال العدد الذي يمثل عدد عناصر المصفوفتين
A
وB
. - بعدها يطلب من المستخدم إعطاء قيم للمصفوفتين
A
وB
و يخزنهم في المصفوفةC
. - في الأخير يعرض للمستخدم القيم التي أصبحت تحتويها المصفوفة
C
.
إرشادات
يجب أن يتم جمع قيم عناصر المصفوفتين A
و B
قي المصفوفة C
كالتالي.
النتيجة المطلوبة
لنفترض أن المستخدم أراد حجم المصفوفتين A
و B
يساوي ” 4 ” و أدخل نفس القيم كما في الصورة السابقة.
كود الجافا
- package vector;
- 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]
- هنا أنشأنا حلقة تبدأ من index العنصر الأول في كلا المصفوفتين, أي العنصر رقم 0, إلى آخر عنصر موجود فيهما و الذي يملك الـ index الأخير, أي
- for (int i=0; i<=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
سيطبع للمستخدم أن العنصر رقم كذا قيمته كذا.
المصدر: التعامل مع المصفوفة ذات البعد الواحد في الخوارزميات – التمرين السابع – المناهج السعودية