الخوارزمياتالتعامل مع المصفوفة ذات البعد الواحد - التمرين الأول
المطلوب
هذا التمرين مقسّم إلى أربع أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.
- أكتب برنامج يطلب من المستخدم إعطائه عدد يمثل عدد عناصر مصفوفة إسمها
vector
و يخزنه في متغير إسمهN
.
إنتبه: يجب أن يدخل المستخدم عدد أكبر من صفر, لأن عدد عناصر المصفوفة لا يمكن أن يكون صفر أو أقل من صفر. - ثم ينشئ المصفوفة
vector
و يحدد أن عدد عناصرها هو العدد الذي أدخله المستخدم. - ثم يعرض عدد عناصر المصفوفة
vector
للمستخدم باستخدام الخاصيةlength
. - ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة
vector
. - ثم يعرض للمستخدم جميع قيم عناصر المصفوفة
vector
.
النتيجة المطلوبة
في الخطوة الأولى: عند تشغيل البرنامج سيطلب من المستخدم إدخال عدد يمثل عدد عناصر المصفوفة.
- في حال أدخل المستخدم العدد 5- سيطلب منه إدخال عدد جديد لأنه يعتبر أصغر أو يساوي صفر.
- في حال أدخل المستخدم العدد 0 سيطلب منه إدخال عدد جديد لأنه يعتبر أصغر أو يساوي صفر أيضاً.
- في حال أدخل المستخدم العدد 5 سيقبله لأنه ليس أصغر أو يساوي صفر, ثم سينتقل إلى الخطوة التالية.
في الخطوة الثانية: سيعرض له العدد الذي قبله من المستخدم و الذي سيمثل عدد عناصر المصفوفة.
في الخطوة الثالثة: سينتظر المستخدم ليدخل قيمة لكل عنصر.
في الخطوة الرابعة: سيعرض له قيم جميع عناصر المصفوفة النهائية.
الخوارزمية
كود الجافا
import java.util.Scanner; public class Vector { public static void main (String[] args) { Scanner input = new Scanner(System.in); int N; int[] vector; do { System.out.print("Enter the length of the vector: "); N = input.nextInt(); } while ( N<= 0 ); System.out.print("--------------------------------------\n"); vector = new int[N]; System.out.print("vector contains " + vector.length + " elements \n" ); System.out.print("--------------------------------------\n"); for (int i=0; i<=N-1; i++) { System.out.print("Enter vector[" +i+ "]: " ); vector[i] = input.nextInt(); } System.out.print("--------------------------------------\n"); for (int i=0; i<=N-1; i++) { System.out.print("vector[" +i+ "]: " +vector[i]+ "\n" ); } } }
شرح الكود
- الهدف من هذا البرنامج تعليمك كيف تتعامل مع المصفوفة من خلال حلقة.
int N; int[] vector;
- هنا قمنا بتجهيز المتغير
N
لتخزين عدد عناصر المصفوفة, و هو أول شيء سيطلب من المستخدم إدخاله. - و المصفوفة
vector
و التي لم يتم تحديد عدد عناصرها.
do { System.out.print("Enter the length of the vector: "); N = input.nextInt(); } while ( N<= 0 );
- هنا سيطلب من المستخدم إدخال عدد عناصر المصفوفة, بعدها سيتم تخزينه في المتغير
N
. - بعدها سيتم فحص قيمة المتغير
N
, إذا كانت أصغر أو تساوي 0 سيطلب من المستخدم إدخال العدد من جديد. - إذاً هذه الحلقة تضمن أن لا يقوم المستخدم بإدخال عدد أصغر أو يساوي 0.
vector = new int[N]; System.out.print("vector contains " + vector.length + " elements \n" );
- هنا سيتم تحديد عدد عناصر المصفوفة و الذي يساوي قيمة العدد
N
التي أدخلها المستخدم. - بعدها سيتم طباعة عدد عناصر المصفوفة باستخدام الخاصية
length
. - لو وضعنا
N
بدلvector.length
لكان الجواب نفسه لأن عدد العناصر أيضاً يساوي قيمة المتغيرN
.
for (int i=0; i<=N-1; i++) { System.out.print("Enter vector[" +i+ "]: " ); vector[i] = input.nextInt(); }
- هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها بهدف إعطاء قيمة لكل عنصر فيها.
- في كل دورة من دورات الحلقة
i
سيطلب من المستخدم إدخال قيمة لعنصر محدد فيها, بعدها سيتم تخزين العدد الذي أدخله في هذا العنصر.
for (int i=0; i<=N-1; i++) { System.out.print("vector[" +i+ "]: " +vector[i]+ "\n" ); }
- هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها بهدف عرض قيمة كل عنصر فيها.
- في كل دورة من دورات الحلقة
i
سيطبع للمستخدم أن العنصر رقم كذا قيمته كذا.
ملاحظة
جميع الحلقات i
التي قمنا بتعريفها في هذا البرنامح, يمكن كتابتها بطرق مختلفة.
فمثلاً لو وضعنا الشرط i<N
أو i<=vector.length-1
أو i<vector.length
بدل i<=N-1
لعمل البرنامج أيضاً بنفس الطريقة لأن كل هذه الشروط ستجعل الحلقة تتوقف عند index آحر عنصر في المصفوفة.
لو عدت للتمرين, و وضعت أي شرط منهم و أدخلت نفس القيم التي أدخلناها, فإن آخر قيمة للعداد i
ستكون 4 طالما أن قيمة المتغير N
الذي يمثل عدد عناصر المصفوفة تساوي 5.