الخوارزمياتالتعامل مع الباراميترات - التمرين الخامس
المطلوب
أكتب دالة إسمها FindAll
, عند إستدعائها تعطيها باراميترين, الباراميتر الأول عبارة عن مصفوفة تحتوي على أعداد صحيحة, الباراميتر الثاني عبارة عن عدد صحيح.
مهمة الدالة هي معرفة كم عنصر في المصفوفة يملك نفس قيمة هذا العدد.
إذاً ستقوم الدالة بمقارنة جميع قيم عناصر المصفوفة مع قيمة هذا العدد. و كل عنصر تجد قيمته تساوي قيمة هذا العدد, ستعرض index العنصر الذي وجدت فيه القيمة.
في البرنامج, قم بإنشاء مصفوفة ذات بعد واحد إسمها Numbers
تحتوي على قيم أولية.
ثم أطلب من المستخدم إدخال أي عدد.
في الأخير قم باستدعاء الدالة FindAll()
لطباعة index كل عنصر في المصفوفة يحتوي على نفس قيمة هذا العدد.
إرشادات
النتيجة المطلوبة
لنفترض أن المصفوفة تحتوي على نفس القيم الموضوعة في الصورة السابقة, و بحثنا عن العدد 1
.
لنفترض أن المصفوفة تحتوي على نفس القيم الموضوعة في الصورة السابقة, و بحثنا عن العدد 5
.
الخوارزمية
كود الجافا
import java.util.Scanner; public class Parameters { /* ------------------------------- هنا قمنا بتعريف الدالة ------------------------------ */ public static void FindAll (int[] a, int b) { int found = 0; for ( int i=0; i<a.length; i++ ) { if ( a[i] == b ) { System.out.print(b+ " is exist at index number: " +i+ "\n"); found++; } } if( found == 0 ) { System.out.print(b+ " is not exist \n"); } } /* --------------------------- من هنا يبدأ البرنامج بالتنفيذ --------------------------- */ public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] Numbers = {2, 7, 5, 6, 9, 14, 0, 5, 12, 5}; int x; System.out.print("Find all: "); x = input.nextInt(); FindAll(Numbers, x); } }
شرح الكود
public static void FindAll (int[] a, int b) { int found = 0; for ( int i=0; i<a.length; i++ ) { if ( a[i] == b ) { System.out.print(b+ " is exist at index number: " +i+ "\n"); found++; } } if( found == 0 ) { System.out.print(b+ " is not exist \n"); } }
- هنا أنشأنا الدالة
FindAll()
و حددنا أن نوعهاvoid
لأنها لن ترجع قيمة, و وضعنا لها باراميترين, الأول مصفوفة نوعهاint
و الثاني متغير نوعهint
. - إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها مصفوفة و قيمة من النوع
int
. - في السطر 10 قمنا بتجهيز المتغير
found
و أعطيناه القيمة 0 كقيمة أولية لأننا سنستخدمه لتخزين عدد المرات التي تم فيها إيجاد قيمة المتغيرb
بداخل المصفوفةa
. - من السطر 12 إلى السطر 19 أنشأنا الحلقة
for
للمرور على جميع عناصر المصفوفة كالتالي: - في كل دورة من دورات الحلقة سيتم مقارنة قيمة عنصر من عناصر المصفوفة مع قيمة المتغير
b
المراد البحث عنها. - في حال وجود عنصر في المصفوفة يملك نفس قيمة المتغير
b
سيتم طباعة رقم index العنصر, ثم إضافة 1 على قيمة المتغيرfound
. - من السطر 21 إلى السطر 24 سيتم فحص قيمة المتغير
found
, في حال بقيت 0 فهذا يعني أنه لم يتم إيجاد القيمة التي تم البحث عنها في المصفوفة, لذلك سيتم طباعة أنه لم يتم إيجاد القيمة المراد البحث عنها.
public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] Numbers = {2, 7, 5, 6, 9, 14, 0, 5, 12, 5}; int x; System.out.print("Find all: "); x = input.nextInt(); FindAll(Numbers, x); }
- في السطر 35 قمنا بإنشاء المصفوفة
Numbers
و حددنا نوعهاint
و أعطيناها قيم عشوائية مباشرةً عند إنشائها. - في السطر 36 قمنا بتعريف المتغير
x
لتخزين العدد الذي سيدخله المستخدم. - في السطرين 38 و 39 طلبنا من المستخدم إدخال العدد الذي يريد البحث عنه في المصفوفة و وضعناه في المتغير
x
. - في السطر 41 قمنا باستدعاء الدالة
FindAll()
و مررنا لها المصفوفة التي تحتوي على الأعداد العشوائية و العدد الذي أدخله المستخدم حتى تبحث عن العدد الذي أدخله المستخدم في المصفوفة, ثم تطبع له نتيجة البحث.