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

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

إستخدام الخاصية length مع المصفوفات ذات البعدين

في الدروس السابقة كنا نضع إسم المصفوفة, ثم نقطة, ثم الخاصية length لنعرف عدد عناصر المصفوفة ذات البعد الواحد.


مثال

كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // قمنا بتعريف مصفوفة تتألف من 3 عناصر
        int vector[] = { 1, 2, 3 };
 
        System.out.print("the number of elements is : " + vector.length + "\n" );
 
    }
 
}
		

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



الآن سنحاول استخدام الخاصية length مع مصفوفة ذات بعدين لمعرفة عدد عناصرها بنفس الطريقة.

كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
        int[][] matrix = {
                            {1, 2, 3, 4, 5},
                            {6, 7, 8, 9, 10},
                            {11, 12, 13, 14, 15}
                         };
 
        System.out.print("the number of elements is : " + matrix.length + "\n" );
 
    }

}
		

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


حتماً أنت الآن تتسائل لماذا طبع لنا أن عدد عناصرها يساوي 3 و ليس 15.

السبب هو أن المصفوفة matrix تتألف من 3 عناصر أساسية (و هي 3 مصفوفات)
و كل عنصر منها (أي كل مصفوفة فيها) تتألف من 5 عناصر (خانات) كما في الصورة التالية.

إذاً عندما كتبت matrix.length قام بإعطائك عدد المصفوفات ذات البعد الواحد الموجودة بداخل المصفوفة matrix و الذي يساوي 3.

الطريقة الصحيحة لإستخدام الخاصية length مع المصفوفة ذات البعدين لمعرفة عدد جميع الأشياء الموجودة فيها


مثال

الآن سنقوم بتعريف نفس المصفوفة السابقة و سنطبع المعلومات التالية:

  • عدد المصفوفات الداخلية (أي عدد الأسطر) الموجودة في المصفوفة matrix.

  • عدد العناصر الموجودة في كل سطر (أي في كل مصفوفة داخلية) في المصفوفة matrix.


كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
        int[][] matrix = {
                            {1, 2, 3, 4, 5},
                            {6, 7, 8, 9, 10},
                            {11, 12, 13, 14, 15}
                         };
 
        // matrix هنا طبعنا عدد عناصر المصفوفات الموجودة في المصفوفة
        System.out.print("the number of elements is : " + matrix.length + "\n\n" );
 
 
        // matrix[0] هنا طبعنا عدد العناصر الموجودة في المصفوفة
        System.out.print("the number of elements of matrix[0] is : " + matrix[0].length + "\n" );
 
        // matrix[1] هنا طبعنا عدد العناصر الموجودة في المصفوفة
        System.out.print("the number of elements of matrix[1] is : " + matrix[1].length + "\n" );
 
        // matrix[2] هنا طبعنا عدد العناصر الموجودة في المصفوفة
        System.out.print("the number of elements of matrix[2] is : " + matrix[2].length + "\n" );
 
    }
 
}
		

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

شرح الكود

  • matrix.length ترجع عدد العناصر الأساسية الموجودة في المصفوفة matrix, أي عدد المصفوفات الموجودة فيها.

  • matrix[0].length ترجع لنا عدد عناصر المصفوفة الأولى في المصفوفة matrix.

  • matrix[1].length ترجع لنا عدد عناصر المصفوفة الثانية في المصفوفة matrix.

  • matrix[2].length ترجع لنا عدد عناصر المصفوفة الثالثة في المصفوفة matrix.

طريقة معرفة عدد عناصر المصفوفة ذات البعدين

لمعرفة عدد عناصر المصفوفة هناك ثلاث طرق يمكنك إستخدام إحداها و ذلك حسب حاجتك.


الطريقة الأولى

إذا كان شكل المصفوفة يشبه شكل المربع أي عدد الأعمدة يساوي عدد الأسطر, كما في الصورة التالية:


كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // قمنا بتعريف مصفوفة تتألف من 3 أسطر و 3 أعمدة
        int[][] matrix = {
                            {1, 2, 3},
                            {4, 5, 6},
                            {7, 8, 9}
                         };
 
        // هنا قلنا أن عدد عناصر المصفوفة يساوي عدد الأسطر ضرب عدد الأعمدة في أي سطر
        System.out.print("the number of elements is : " + (matrix.length * matrix[0].length) + "\n" );
 
        // هنا قلنا أن عدد الأعمدة في أي سطر ضرب عدد الأعمدة في أي سطر
        System.out.print("the number of elements is : " + (matrix[0].length * matrix[0].length) + "\n" );
 
        // هنا قلنا أن عدد العناصر يساوي عدد الأسطر ضرب عدد الأسطر
        System.out.print("the number of elements is : " + (matrix.length * matrix.length) + "\n" );
 
    }

}
		

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



الطريقة الثانية

إذا كان شكل المصفوفة يشبه شكل المستطيل أي عدد الأعمدة لا يساوي عدد الأسطر, كما في الصورة التالية.


كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        // هنا قمنا بتعريف مصفوفة تتألف من 3 أسطر و 5 أعمدة
        int[][] matrix = {
                            {1, 2, 3, 4, 5},
                            {6, 7, 8, 9, 10},
                            {11, 12, 13, 14, 15}
                         };
 
        // هنا قلنا أن عدد العناصر يساوي عدد الأسطر ضرب عدد الأعمدة في أي سطر
        System.out.print("the number of elements is : " + (matrix.length * matrix[0].length) + "\n" );
 
    }
 
}
		

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



الطريقة الثالثة

معرفة عدد العناصر التي تحتوي على قيم مهما كان شكل المصفوفة, كما في الصورة التالية.


كود الجافا

public class Matrix {
 
    public static void main (String[] args) {
 
        int elements_found = 0;
 
        int[][] matrix = {
                            {1, 2, 3},
                            {4, 5, 6, 7, 8},
                            {9, 10, 11, 12},
                            {13, 14}
                         };
 
        for (int i=0; i<matrix.length; i++)
        {
            elements_found = elements_found + matrix[i].length;
        }
 
        System.out.print("the number of elements is : " + elements_found + "\n" );
 
    }
 
}
		

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

شرح الكود

  • الهدف من هذا البرنامج معرفة عدد عناصر المصفوفة مهما كان شكلها.



  • 		int elements_found = 0;
    		
    		int[][] matrix = {
    							{1, 2, 3},
    							{4, 5, 6, 7, 8},
    							{9, 10, 11, 12},
    							{13, 14}
    						};
    				
  • قمنا بتجهيز المتغير elements_found لتخزين عدد جميع عناصر المصفوفة لاحقاً.

  • و أنشأنا المصفوفة ذات البعدين matrix و التي ليس لها شكل محدد مثل المربع أو المستطيل.



  • 		for (int i=0; i<matrix.length; i++)
    		{
    			elements_found = elements_found + matrix[i].length;
    		}
    				
  • هنا قمنا بإنشاء تبدأ من index أول سطر إلى آخر سطر موجود في المصفوفة matrix.

  • في كل دورة من دورات الحلقة i سيتم إضافة عدد العناصر الموجودة في كل سطر (أي في كل مصفوفة ذات بعد واحد فيها) على قيمة المتغير elements_found.



  • 		System.out.print("the number of elements is : " + elements_found + "\n" );
    				
  • في الأخير عرضنا قيمة المتغير elements_found لنتأكد من الجواب.


ملاحظة

الطريقة الثالثة هي أهم طريقة لأنها تجعلك تعرف عدد عناصر المصفوفة ذات البعدين مهما كان شكلها, لكننا لا ننصحك باستخدامها إلا إذا كنت ستتعامل مع مصفوفة ذات بعدين لا تشبه شكل المربع أو المستطيل لأنها تتطلب كود أكبر.


تعليقات