الدرس 6 من 10

المصفوفات

هدف الدرس

الحقل length والدالتان Arrays.sort وArrays.toString

01

الشرح

المصفوفة مجموعة قيم من نوع واحد طولها ثابت، مثل int[] scores = {70, 95, 81};، أو new int[5] التي تنشئ خمس خانات قيمة كلٍّ منها صفر. وتقرأ العنصر برقم موضعه (index)، والعدّ يبدأ من الصفر، فالعنصر الأول scores[0] والأخير scores[scores.length - 1]. وlength هنا حقل يُكتب دون أقواس، وإذا طلبت موضعًا خارج الحدود رمى البرنامج ArrayIndexOutOfBoundsException.

ويجمع الصنف Arrays من java.util أدوات المصفوفات، فـ Arrays.sort(a) ترتّبها تصاعديًّا، وArrays.toString(a) تحوّلها إلى نصّ مقروء مثل [60, 70, 81]، وArrays.copyOf(a, n) تنسخ أول n من عناصرها في مصفوفة جديدة، أما a.clone() فتنسخها كاملة.

وانتبه إلى أمرين، الأول أن طباعة المصفوفة مباشرة تُظهر شيئًا مثل [I@1b6d3586 بدل عناصرها، والثاني أن Arrays.sort ترتّب المصفوفة نفسها ولا تُرجع شيئًا. والمتغيّر لا يحمل المصفوفة بل يشير إليها، فالدالة التي تستلمها تعمل على المصفوفة الأصلية، وما ترتّبه داخلها يتغيّر عند من استدعاها، ولذلك انسخها أوّلًا إذا أردت أن يبقى الأصل كما هو.

02

المطلوب

اكتب average(a) لتُرجع المتوسّط عددًا عشريًّا، وتُرجع 0 للمصفوفة الفارغة، وreversed(a) لتُرجع مصفوفة جديدة بالترتيب المعكوس، وtop3(scores) لتُرجع أعلى ثلاث درجات مرتّبة من الأعلى إلى الأدنى، أو تُرجع الدرجات كلها إذا كانت أقلّ من ثلاث، ولا تغيّر أي دالة منها المصفوفة الأصلية. ثم اطبع من main ناتج top3(scores) بالشكل [95, 88, 81].

الفحوص

6 فحوص
  1. الدالة average تُرجع متوسّطًا عشريًّا لا صحيحًا
  2. الدالة average تُرجع 0 للمصفوفة الفارغة وليس NaN
  3. الدالة reversed تُرجع المصفوفة معكوسة
  4. الدالة reversed تُرجع مصفوفة جديدة ولا تغيّر الأصل
  5. الدالة top3 تُرجع أعلى ثلاث درجات مرتّبة من الأعلى، والأصل يبقى كما هو
  6. طُبع [95, 88, 81]
03

تلميحات

0/3
Main.java
المخرجاتJava 13 (Judge0)

يُترجَم كودك الآن ويُشغَّل على الخادم.

–/6

يُترجَم كودك الآن ويُشغَّل على الخادم.

تجد 6 فحوص في بطاقة «المطلوب».