الخوارزمياتالتعامل مع المصفوفة ذات البعدين - التمرين الثامن
المطلوب
هذا التمرين مقسّم إلى خمسة أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.
- أكتب برنامج يعرّف مصفوفة إسمها
matrixتتألف من 3 أسطر و 5 أعمدة. - ثم يطلب من المستخدم إدخال قيم لها.
- ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
- بعدها يطلب من المستخدم إدخال أي عدد ليرى كم مرة هذا العدد موجود في المصفوفة, و يخزنه في المتغير
x. - في الأخير يعرض للمستخدم ناتج عملية البحث, أي كم مرة وجد نفس قيمة المتغير
xفي المصفوفةmatrix.
النتيجة المطلوبة
لنفترض أن المستخدم أدخل قيم عشوائية في المصفوفة, ثم أدخل العدد 3 ليعرف كم مرة توجد القيمة 3 في المصفوفة.
الخوارزمية
كود الجافا
import java.util.Scanner; public class Matrix { public static void main (String[] args) { Scanner input = new Scanner(System.in); int[][] matrix = new int[3][5]; int x; int found = 0; for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); } for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("\n"); } System.out.print("\nEnter any number: "); x = input.nextInt(); for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { if( matrix[i][j] == x ) { found = found + 1; } } } System.out.print(x + " is exist " +found+ " times in the Matrix \n"); } }
شرح الكود
int[][] matrix = new int[3][5]; int x; int found = 0;
- هنا قمنا بتجهيز المصفوفة
matrixو حددنا أنها تتألف من 3 أسطر و 5 أعمدة. - و المتغير
xسنستخدمه لتخزين القيمة (أي العدد) التي سيدخلها المستخدم لاحقاً للبحث عنها في المصفوفة. - و المتغير
foundو أعطيناه القيمة 0 كقيمة أولية لأننا سنستخدمه لاحقاً لحساب كم مرة تم إيجاد القيمة التي بحث عنها المستخدم.
for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); }
- هنا قمنا بإنشاء الحلقتين
iوjلجعل المستخدم يدخل قيمة لكل عنصر في المصفوفة. - الحلقة
iللإنتقال من سطر إلى آخر في المصفوفة, و الحلقةjللإنتقال من عمود إلى آخر في كل سطر في المصفوفة. - هنا في كل دورة من دورات الحلقة
iسيتم إنشاء حلقةjللمرور على جميع العناصر الموجودة في نفس السطر. - في كل دورة من دورات الحلقة
jسيطلب من المستخدم إدخال قيمة لعنصر, ثم سيتم تخزينها في هذا العنصر. - بعد توقف الحلقة
j(أي بعد إعطاء قيم لجميع العناصر الموجودة في نفس السطر) سيتم النزول على سطر جديد بسبب الرمز\n.
for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("\n"); }
- هنا قمنا بإنشاء الحلقتين
iوjلعرض جميع قيم المصفوفةmatrix. - الحلقة
iللإنتقال من سطر إلى آخر فيها, و الحلقةjللإنتقال من عمود إلى آخر في كل سطر فيها. - هنا في كل دورة من دورات الحلقة
iسيتم إنشاء حلقةjلعرض قيمة جميع العناصر الموجودة في نفس السطر. - في كل دورة من دورات الحلقة
jسيتم عرض قيمة عنصر, ثم وضع بعض المسافات الفارغة بسبب الرمز\t. - بعد توقف الحلقة
j, أي بعد عرض قيم جميع العناصر الموجودة في نفس السطر, سيتم النزول على سطر جديد بسبب الرمز\n.
System.out.print("\nEnter any number: ");
x = input.nextInt();- هنا سيطلب من المستخدم إدخال أي عدد, و بعدها سيتم تخزينه في المتغير
x.
for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { if( matrix[i][j] == x ) { found = found + 1; } } }
- هنا أنشانا الحلقتين
iوjللمرور على جميع عناصر المصفوفة. - سيتم مقارنة قيمة كل عنصر في المصفوفة مع قيمة المتغير
xأي ( مع العدد الذي أدخله المستخدم ). - في كل مرة تكون فيها قيمة العنصر تساوي قيمة المتغير
xسيتم زيادة قيمة العدادfoundواحداً - إذاً المتغير
foundسيمثل عدد وجود قيمة المتغيرxفي المصفوفةmatrix.
System.out.print(x + " is exist " +found+ " times in the Matrix \n");
- هنا قمنا بعرض قيمة المتغير
foundلعرض نتيجة البحث, أي لعرض كم مرة قد وجدت القيمة المتغيرxفي المصفوفة.