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
لنتأكد من الجواب.
ملاحظة
الطريقة الثالثة هي أهم طريقة لأنها تجعلك تعرف عدد عناصر المصفوفة ذات البعدين مهما كان شكلها, لكننا لا ننصحك باستخدامها إلا إذا كنت ستتعامل مع مصفوفة ذات بعدين لا تشبه شكل المربع أو المستطيل لأنها تتطلب كود أكبر.