الخوارزميات التعامل مع المصفوفات ذات البعدين

المبادئ التي عليك اتباعها أو تقليدها مع المصفوفات ذات البعدين

تذكر المبادئ التالية في كل مرة تتعامل فيها مع مصفوفة ذات بعدين:

  • إستخدم حلقتين for متداخلتين في حال أردت الوصول لجميع عناصر المصفوفة.
  • الحلقة التي تجعلك تنتقل من سطر لآخر قم بتسمية العداد فيها i و إجعلها تبدأ من 0 إلى عدد الأسطر فيها ناقص 1.
  • الحلقة التي تجعلك تنتقل من عامود لآخر قم بتسمية العداد فيها j و إجعلها تبدأ من 0 إلى عدد الأعمدة فيها ناقص 1.
  • إستخدم الرمز \t في حال كنت تريد عرض عناصر المصفوفة كجدول لأنه يضع مسافات فارغة بشكل تلقائي بين كل قيمتين على نفس السطر.
  • إستخدم الحلقة while أو do while في حال لم تكن تريد الوصول لجميع عناصر المصفوفة.
  • إستخدم الحلقة do while في حال كنت تريد جعل المستخدم يدخل قيمة تستوفي شرط معين.

ستفهم كل هذه المبادئ من التمارين.



طريقة الوصول إلى قيم عناصر المصفوفة سطراً - سطراً أو عاموداً - عاموداً

  • في حال أردت الوصول إلى عناصر المصفوفة سطراً سطراً, عليك جعل الحلقة الخارجية تنتقل من سطر لآخر و الحلقة الداخلية تنتقل من عامود لآخر.
  • في حال أردت الوصول إلى عناصر المصفوفة عاموداً عاموداً, عليك جعل الحلقة الخارجية تنتقل من عامود لآخر و الحلقة الداخلية تنتقل من سطر لآخر.

المثال التالي يوضح كيف تعرّف الحلقتين i و j في حال كنت تريد التنقل في المصفوفة سطراً - سطراً أو عاموداً - عاموداً.

كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // قمنا بتعريف مصفوفة تتألف من 3 أسطر و 3 أعمدة
        int[][] matrix = {
                            {1, 2, 3},
                            {4, 5, 6},
                            {7, 8, 9}
                         };
 
 
        // هنا قمنا بعرض القيم الموجودة في كل سطر في المصفوفة
        for (int i=0; i<3; i++)
        {
            System.out.print("Row ["+i+"] values: ");
            for (int j=0; j<3; j++)
            {
                System.out.print( matrix[i][j] + " " );
            }
            System.out.print( "\n" );
        }
 
 
        System.out.print( "\n" );
 
 
        // هنا قمنا بعرض القيم الموجودة في كل جدول في المصفوفة
        for (int j=0; j<3; j++)
        {
            System.out.print("Column ["+j+"] values: ");
            for (int i=0; i<3; i++)
            {
                System.out.print( matrix[i][j] + " " );
            }
            System.out.print( "\n" );
        }
 
 
    }
 
}
		

نتيجة التشغيل


تذكر

يمكنك دائماً كتابة الكود بأكثر من طريقة و الحصول على نفس النتيجة.
بمعنى أخر, يوجد طريقة أخرى للتنقل بين عناصر المصفوفة غير التلاعب بأمكان الحلقات i و j.
الطريقة الأخرى ستتعلمها من التمارين الموضوعة ضمن هذا الدرس.

تمارين شاملة حول المصفوفات ذات البعدين


التمرين الأول

  1. أكتب برنامج يطلب من المستخدم إعطائه عددين, العدد الأول يمثل عدد أسطر مصفوفة ذات بعدين إسمها matrix و العدد الثاني يمثل عدد أعمدتها.
    خزن العدد الأول في متغير إسمه a و العدد الثاني في متغير إسمه b.
    إنتبه: يجب أن يدخل المستخدم عددين أكبر من صفر, لأن عدد عناصر المصفوفة لا يمكن أن يكون صفر أو أقل من صفر.
  2. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة matrix.
  3. ثم يعرض له جميع قيم عناصر المصفوفة matrix.

الحل و التفسير »



التمرين الثاني

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم ناتج جمع جميع قيم عناصرها.

الحل و التفسير »



التمرين الثالث

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم ناتج جمع قيم العناصر الموجودة في كل سطر فيها.

الحل و التفسير »



التمرين الرابع

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم ناتج جمع قيم العناصر الموجودة في كل عامود فيها.

الحل و التفسير »



التمرين الخامس

أكتب نفس البرنامج السابق بطريقة أخرى. إذاً إفعل التالي:

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم ناتج جمع قيم العناصر الموجودة في كل عامود فيها.

الحل و التفسير »



التمرين السادس

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 4 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
  4. ثم يقوم بتخزين جميع القيم الموجودة في المصفوفة matrix بداخل مصفوفة ذات بعد واحد, قم بتسميتها vector.
  5. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويهم المصفوفة vector على نفس السطر.

الحل و التفسير »



التمرين السابع

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 4 أسطر و 4 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
    إنتبه: نريد هذه المصفوفة أن تحتوي فقط على قيم أكبر أو تساوي صفر مثل 8, 5, 4, 43, 10.
  3. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
  4. بعدها يقوم بجمع قيم جميع العناصر الموجودة على الـ Diagonal, فوق الـ Diagonal, و تحت الـ Diagonal.
  5. في الأخير يعرض للمستخدم ناتج الجمع.

الحل و التفسير »



التمرين الثامن

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 5 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
  4. بعدها يطلب من المستخدم إدخال أي عدد ليرى كم مرة هذا العدد موجود في المصفوفة, و يخزنه في المتغير x.
  5. في الأخير يعرض للمستخدم ناتج عملية البحث, أي كم مرة وجد نفس قيمة المتغير x في المصفوفة matrix.

الحل و التفسير »



التمرين التاسع

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 5 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
  4. بعدها يطلب من المستخدم إدخال أي عدد ليرى إذا كان موجوداً في المصفوفة, و يخزنه في المتغير x.
    إنتبه: يكفي أن يعرف المستخدم إذا كان العدد الذي يبحث عنه موجوداً مرة واحدة في المصفوفة.
  5. في الأخير يعرض للمستخدم ناتج عملية البحث, أي إذا وجد نفس قيمة المتغير x في المصفوفة matrix أم لا.

ملاحظة: قم بتعريف العدادين i و j مرة واحدة في بداية البرنامج.

الحل و التفسير »



التمرين العاشر

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  3. ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
  4. بعدها يقوم بجمع قيم العناصر الموجودة في كل سطر, و يخزن ناتج الجمع في مصفوفة ذات بعد واحد إسمها vector.
  5. في الأخير يعرض للمستخدم القيم التي أصبحت تحتويها المصفوفة vector.

ملاحظة: قم بتعريف العدادين i و j مرة واحدة في بداية البرنامج.

الحل و التفسير »

الدورات

أدوات مساعدة

الأقسام

دورات
مقالات أسئلة مشاريع كتب