الدرس 6 من 10

المصفوفات والقوائم

هدف الدرس

مصفوفة ثابتة و List<T> تكبر

01

الشرح

المصفوفة عدد ثابت من الخانات يُحدَّد عند إنشائها: string[] hotbar = { "سيف", "قوس", "جرعة" };. تقرأ الخانة بموضعها والعدّ من الصفر، فـ hotbar[0] الأولى، وhotbar.Length عدد الخانات، وآخر موضع Length - 1. والموضع خارج هذا المدى يرمي IndexOutOfRangeException. وnew int[5] تنشئ خمس خانات قيمتها صفر.

أما List<T> فتكبر وتصغر، وT نوع عناصرها: var bag = new List<string>();. Add تُلحق في الآخر، وRemove تحذف أول عنصر مطابق وحده وتُرجع true إن وجدته، وContains تسأل عن الوجود، وCount عدد العناصر: Count للقائمة وLength للمصفوفة. وتمرّ عليها بـ foreach (string item in bag)، لكن لا تضف إليها ولا تحذف منها داخل تلك الحلقة نفسها، وإلا رمت InvalidOperationException.

والقائمة تصل إلى الدالة بمرجعها لا بنسخة منها، فما تضيفه الدالة يراه المستدعي بلا ref، بخلاف int في الدرس السابق.

02

المطلوب

أكمل SlotAt(hotbar, index) لتُرجع العنصر في الموضع، أو نصًّا فارغًا "" إن كان الموضع خارج المصفوفة. وAddItem(bag, item) تضيف العنصر وتُرجع true ما دام في الحقيبة أقلّ من 5 عناصر، وإلا تُرجع false ولا تضيف. وUseItem(bag, item) تحذف نسخة واحدة من العنصر وتُرجع هل وُجد. وCountOf(bag, item) تعدّ نسخ العنصر في الحقيبة بـ foreach.

معايير التصحيح

6 معايير
  1. SlotAt تُرجع العنصر في موضعه، والعدّ من الصفر
  2. SlotAt خارج المصفوفة تُرجع نصًّا فارغًا ولا تنهار
  3. AddItem تُلحق العنصر في الآخر وتُرجع true
  4. والحقيبة لا تتجاوز خمسة عناصر
  5. UseItem تحذف نسخة واحدة، وتُرجع false لما ليس في الحقيبة
  6. CountOf تعدّ نسخ العنصر
Program.cs
المخرجاتC# · Mono 6.6 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».