Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

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

المطلوب

هذا التمرين مقسّم إلى ثلاثة أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.

  1. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
  2. ثم يطلب من المستخدم إدخال قيم لها.
  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.
      إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في السطر الثالث.

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


دورة تعلم البرمجة للمبتدئين >