الخوارزمياتالتعامل مع المصفوفة ذات البعدين - التمرين السادس
المطلوب
هذا التمرين مقسّم إلى خمسة أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.
- أكتب برنامج يعرّف مصفوفة إسمها
matrixتتألف من 3 أسطر و 4 أعمدة. - ثم يطلب من المستخدم إدخال قيم لها.
- ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويها المصفوفة.
- ثم يقوم بتخزين جميع القيم الموجودة في المصفوفة
matrixبداخل مصفوفة ذات بعد واحد, قم بتسميتهاvector. - ثم يعرض للمستخدم جميع القيم التي أصبحت تحتويهم المصفوفة
vectorعلى نفس السطر.
لنفترض أن المستخدم أدخل 12 قيمة كما في الصورة التالية عند التشغيل.
تحليل النتيجة
الخوارزمية
كود الجافا
import java.util.Scanner; public class Matrix { public static void main (String[] args) { Scanner input = new Scanner(System.in); int[][] matrix = new int[3][4]; int[] vector = new int[3*4]; int k=0; for (int i=0; i<3; i++) { for (int j=0; j<4; 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<4; j++) { vector[k] = matrix[i][j]; k = k + 1 ; } } System.out.print("matrix contain these values: \n"); for (int i=0; i<3; i++) { for (int j=0; j<4; j++) { System.out.print(matrix[i][j] + "\t"); } System.out.print("\n"); } System.out.print("\nvector contain these values: \n"); for (int i=0; i<vector.length; i++) { System.out.print(vector[i] + "\t"); } System.out.print("\n\n"); } }
شرح الكود
int[][] matrix = new int[3][4]; int[] vector = new int[3*4]; int k=0;
- هنا قمنا بتجهيز المصفوفة
matrixو حددنا أنها تتألف من 3 أسطر و 4 أعمدة ( 3 * 4 = 12 عنصر ). - و المصفوفة
vectorو حددنا أنها تتألف من ( 3 * 4 ) عناصر أيضاً, أي من 12 عنصر لأن عدد عناصرها يجب أن يساوي عدد عناصر المصفوفةmatrix. - و المتغير
kالذي أعطيناه القيمة 0 كقيمة أولية لأننا سنستخدمه لاحقاً كعداد للوصول إلى عناصر المصفوفةvector.
for (int i=0; i<3; i++) { for (int j=0; j<4; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); }
- هنا قمنا بإنشاء الحلقتين
iوjلجعل المستخدم يدخل قيمة لكل عنصر في المصفوفةmatrix. - الحلقة
iللإنتقال من سطر إلى آخر في المصفوفة, و الحلقةjللإنتقال من عمود إلى آخر في كل سطر في المصفوفة. - هنا في كل دورة من دورات الحلقة
iسيتم إنشاء حلقةjللمرور على جميع العناصر الموجودة في نفس السطر. - في كل دورة من دورات الحلقة
jسيطلب من المستخدم إدخال قيمة لعنصر, ثم سيتم تخزينها في هذا العنصر. - بعد توقف الحلقة
j(أي بعد إعطاء قيم لجميع العناصر الموجودة في نفس السطر) سيتم النزول على سطر جديد بسبب الرمز\n.
for (int i=0; i<3; i++) { for (int j=0; j<4; j++) { vector[k] = matrix[i][j]; k = k + 1 ; } }
- هنا أنشأنا الحلقتين
iوjلتخزين قيمة كل عنصر موجود في المصفوفةmatrixفي المصفوفةvector. - الحلقة
iللإنتقال من سطر إلى آخر فيها, و الحلقةjللإنتقال من عمود إلى آخر في كل سطر فيها. - المتغير
kإستخدمناه كعداد بالنسبة للمصفوفةvectorفبواسطته إستطعنا الوصول إلى عناصر المصفوفةvectorبشكل متوازي مع عناصر المصفوفةmatrix. - إذاً في كل دورة من دورات الحلقة
jسيتم وضع قيمة العنصر الحالي في المصفوفةmatrixفي العنصر التالي في المصفوفةvectorلأن قيمة العدادkتزيد واحد في كل مرة.
System.out.print("matrix contain these values: \n"); for (int i=0; i<3; i++) { for (int j=0; j<4; 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("\nvector contain these values: \n"); for (int i=0; i<vector.length; i++) { System.out.print(vector[i] + "\t"); }
- هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة
vectorإلى آخر عنصر موجود فيها بهدف عرض قيمة كل عنصر فيها. - في كل دورة من دورات الحلقة
iسيتم عرض قيمة عنصر, ثم وضع بعض المسافات الفارغة بسبب الرمز\t.