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

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

المطلوب

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

  1. أكتب برنامج يطلب من المستخدم إعطائه عدد يمثل عدد عناصر مصفوفة إسمها vector و يخزنه في متغير إسمه N.
    تذكر: يجب أن يدخل المستخدم عدد أكبر من صفر, لأن عدد عناصر المصفوفة لا يمكن أن يكون صفر أو أقل من صفر.
  2. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة vector.
  3. ثم يعرض للمستخدم قيم المصفوفة التي قام هو بإدخالها.
  4. بعدها يقوم بالمرور على جميع عناصر المصفوفة و يفعل التالي:
    - كل قيمة يجدها أكبر من صفر يحولها إلى 1.
    - كل قيمة يجدها أصغر من صفر يحولها إلى -1.
  5. في الأخير يعرض للمستخدم قيم المصفوفة من جديد.

النتيجة المطلوبة

لنفترض أن المستخدم أدخل 6 قيم كما في الصورة التالية.

تحليل النتيجة

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

الخوارزمية

كود الجافا

import java.util.Scanner;
 
public class Vector {
 
    public static void main (String[] args) {
 
        Scanner input = new Scanner(System.in);
 
        int N;
        int[] vector;
 
        do
        {
            System.out.print("Enter the length of the vector: ");
            N = input.nextInt();
        }
        while ( N<= 0 );
 
        vector = new int[N];
 
        System.out.print("\n");
 
        for (int i=0; i<=N-1; i++)
        {
            System.out.print("Enter vector[" +i+ "]: " );
            vector[i] = input.nextInt();
        }
 
        System.out.print("\nBefore changing: \n");
 
        for (int i=0; i<=N-1; i++)
        {
            System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
        }
 
        for (int i=0; i<=N-1; i++)
        {
            if ( vector[i] > 0 )
            {
                vector[i] = 1;
            }
            else if ( vector[i] < 0 )
            {
                vector[i] = -1;
            }
        }
 
        System.out.print("\nAfter changing: \n");
 
        for (int i=0; i<=N-1; i++)
        {
            System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
        }
 
        System.out.print("\n");
 
    }
 
}

شرح الكود


        int N;
        int[] vector;
  • هنا قمنا بتجهيز المتغير N لتخزين عدد عناصر المصفوفة, و هو أول شيء سيطلب من المستخدم إدخاله.
  • و المصفوفة vector و التي لم يتم تحديد عدد عناصرها.


        do
        {
            System.out.print("Enter the length of the vector: ");
            N = input.nextInt();
        }
        while ( N<= 0 );
  • هنا سيطلب من المستخدم إدخال عدد عناصر المصفوفة, بعدها سيتم تخزينه في المتغير N.
  • بعدها سيتم فحص قيمة المتغير N, إذا كانت أصغر أو تساوي 0 سيطلب من المستخدم إدخال العدد من جديد.
  • إذاً هذه الحلقة تضمن أن لا يقوم المستخدم بإدخال عدد أصغر أو يساوي 0.


        vector = new int[N];
  • هنا سيتم تحديد عدد عناصر المصفوفة و الذي يساوي قيمة العدد N التي أدخلها المستخدم.
  • بعدها سيتم طباعة عدد عناصر المصفوفة باستخدام الخاصية length.
  • لو وضعنا N بدل vector.length لكان الجواب نفسه لأن عدد العناصر أيضاً يساوي قيمة المتغير N.


        for (int i=0; i<=N-1; i++)
        {
            System.out.print("Enter vector[" +i+ "]: " );
            vector[i] = input.nextInt();
        }
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها لعرض جميع قيم المصفوفة قبل قيمة أي عنصر فيها.


        System.out.print("\nBefore changing: \n");
        
        for (int i=0; i<=N-1; i++)
        {
            System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
        }
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها بهدف عرض قيمة كل عنصر فيها.
  • في كل دورة من دورات الحلقة i سيطبع للمستخدم أن العنصر رقم كذا قيمته كذا.


        for (int i=0; i <=N-1; i++)
        {
            if ( vector[i] > 0 )
            {
                vector[i] = 1;
            }
            else if ( vector[i] < 0 )
            {
                vector[i] = -1;
            }
        }
  • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها لفحص قيمة كل عنصر فيها.
  • في كل دورة من دورات الحلقة i سيقوم البرنامج بفحص قيمة عنصر ثم تحويلها كالتالي:
    • إذا وجد أن قيمة العنصر أكبر من 0 سيقوم بوضع 1 مكانها.
    • إذا وجد أن قيمة العنصر أصغر من 0 سيقوم بوضع -1 مكانها.


        System.out.print("\nAfter arrangement: \n");
        
        for (int i=0; i<vector.length; i++)
        {
            System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
        }
  • في الأخير سيتم إنشاء حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها لعرض قيم المصفوفة بعد أن تم تحويلهم.

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


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