الخوارزمياتالتعامل مع المصفوفة ذات البعدين - التمرين الثالث
المطلوب
هذا التمرين مقسّم إلى ثلاثة أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.
- أكتب برنامج يعرّف مصفوفة إسمها
matrixتتألف من 3 أسطر و 3 أعمدة. - ثم يطلب من المستخدم إدخال قيم لها.
- ثم يعرض للمستخدم ناتج جمع قيم العناصر الموجودة في كل سطر فيها.
النتيجة المطلوبة
لنفترض أن المستخدم أدخل 9 قيم كما في الصورة التالية عند التشغيل.
تحليل النتيجة
الخوارزمية
كود الجافا
import java.util.Scanner; public class Matrix { public static void main (String[] args) { Scanner input = new Scanner(System.in); int[][] matrix = new int[3][3]; int S; for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { System.out.print("Enter matrix["+i+"]["+j+"]: "); matrix[i][j] = input.nextInt(); } System.out.print("\n"); } for (int i=0; i<3; i++) { S = 0; for (int j=0; j<3; j++) { S = S + matrix[i][j]; } System.out.print("The sum of elements in row "+i+" is : " +S+ "\n"); } } }
شرح الكود
int[][] matrix = new int[3][3]; int S;
- هنا قمنا بتجهيز المصفوفة
matrixو حددنا أنها تتألف من 3 أسطر و 3 أعمدة. - و المتغير
Sالذي سنستخدمه لاحقاً لتخزين ناتج جمع القيم الموجودة في كل سطر.
ملاحظة: لم نضع القيمة 0 كقيمة أولية للمتغيرSالآن لأننا قبل حساب ناتج قيمة العناصر الموجودة في كل سطر سنضع فيه القيمة 0 كقيمة أولية.
for (int i=0; i<3; i++) { for (int j=0; j<3; 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++) { S = 0; for (int j=0; j<3; j++) { S = S + matrix[i][j]; } System.out.print("The sum of elements in row "+i+" is : " +S+ "\n"); }
- هنا قمنا بإنشاء الحلقتين
iوjللوصول إلى جميع قيم عناصر المصفوفة. - في كل دورة من دورات الحلقة
iسيتم حساب ناتج جمع القيم الموجودة في نفس السطر, ثم طباعة الناتج كالتالي: - سيتم تصفير قيمة المتغير
Sقبل البدء بحساب ناتج جمع قيم العناصر الموجودة في نفس السطر حتى لا يتم إضافة ناتج جمع القيم الموجودة في السطر القديم على ناتج القيم الموجودة في السطر الحالي في كل مرة يتم فيها الإنتقال إلى سطر جديد. - بعدها سيتم إنشاء الحلقة
jللمرور على جميع العناصر الموجودة في نفس السطر. - في كل دورة من دورات الحلقة
jسيتم إضافة قيمة عنصر من العناصر الموجودة في نفس السطر على قيمة المتغيرS. - عند توقف الحلقة
jسيكون ناتج جمع جميع العناصر الموجودة في نفس السطر موجود في المتغيرS. - لذلك سيتم عرض قيمة المتغير
Sكناتج جمع جميع العناصر الموجودة في نفس السطر. - لاحظ كيف سيتم إضافة قيم العناصر الموجودة في نفس السطر على قيمة المتغير
S: - عندما تكون قيمة العداد
iتساوي 0 و قيمة العدادjتساوي 0 سيتم إضافة قيمة العنصرmatrix[0][0]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 0 و قيمة العدادjتساوي 1 سيتم إضافة قيمة العنصرmatrix[0][1]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 0 و قيمة العدادjتساوي 2 سيتم إضافة قيمة العنصرmatrix[0][2]على قيمة المتغيرS.
إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في السطر الأول. - عندما تكون قيمة العداد
iتساوي 1 و قيمة العدادjتساوي 0 سيتم إضافة قيمة العنصرmatrix[1][0]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 1 و قيمة العدادjتساوي 1 سيتم إضافة قيمة العنصرmatrix[1][1]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 1 و قيمة العدادjتساوي 2 سيتم إضافة قيمة العنصرmatrix[1][2]على قيمة المتغيرS.
إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في السطر الثاني. - عندما تكون قيمة العداد
iتساوي 2 و قيمة العدادjتساوي 0 سيتم إضافة قيمة العنصرmatrix[2][0]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 2 و قيمة العدادjتساوي 1 سيتم إضافة قيمة العنصرmatrix[2][1]على قيمة المتغيرS. - عندما تكون قيمة العداد
iتساوي 2 و قيمة العدادjتساوي 2 سيتم إضافة قيمة العنصرmatrix[2][2]على قيمة المتغيرS.
إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في السطر الثالث.