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

تمارين بلغة الجافا ...Check If Array Is Subset Of Another Array

اذهب الى الأسفل

تمارين بلغة الجافا ...Check If Array Is Subset Of Another Array  Empty تمارين بلغة الجافا ...Check If Array Is Subset Of Another Array

مُساهمة من طرف أحمد مناع الجمعة أبريل 24, 2020 6:42 pm

أهلا وسهلا بكم أخوانى الكرام 

مازلنا مع بعض الاسئلة التى يتم ارسالها للحل و اليكم السؤان التالى :

تمارين بلغة الجافا ...Check If Array Is Subset Of Another Array  94436810

هذا السؤال يتطلب الاتى :

1_ إنشاء طريقة باسم compera تسقبل مصفوفتين غير معلومة الحجم يتم ادخلها عناصرهما عن طريق المستخدم
2_ تقوم الطريقة بالتححق من اى من هذين المصفوفتين تعتبر مصفوفة فرعية من الاخري ...وليس مجرد التحقق ان المصفوفة 2 مصفوفة فرعية من 1 ام لا بل تحديد اى منهما مصفوفة فرعية من الاخر
3_التحقق من ان المصفوفات متساويات

ومطلوب الاخراج سطر واحد فقط على النحو التالى :

1_ A is Sub of Array B
2_ B is Sub of Array A
3_A and B Are equal
4_ A And B Are Not Sub Of each ather


وحتى يتم معرفة أن مصفوفة ما تعتبر مصفوفة فرعية من الاخري يتم ذلك عن طريق حلقتين دوران متداخلتين ...الحلقة الخارجية يتم فيها المرور على جميع عناصر المصفوفة arr2_وهى المصفوفة الاصغر حجما المراد معرفه انها جزء من الكبري_ واحدة تلو الأخرى. الحلقة الداخلية تبحث خطيًا داخل المصفوفة arr1_ المصفوفة الاكبر حجما _عن العنصر الذي تم انتقاؤه بواسطة الحلقة الخارجية إذا تم العثور على جميع العناصر أذا المصفوفة arr2 تعتبر مصفوفة فرعية من arr1 أم غير ذلك فلا تعتبر المصفوفة arr2 جزء منها .

أما بالنسبة لمعرفة هل المصفوفتين متساويات أم لا يتم الحقق من ذلك باستخدام أولا جملة شرطية للتحقق من ان حجمها واحد اذا كان الامر كذل يتم استخدام حلقة دوران لمقارنة عناصر كل مصفوفة للتاكد من مطابقتها أم اذا كانت احدى المصفوفات أكبر من الاخرى فلا داعى لحلقة الدوران فاكييد عناصرالمصفوفتين غير متطابقة

أذن مخطط البرنامج سيكون على النحو التالى :

1_معرفة حجم المصفوفات حتى نحدد اى من المصفوفتين يتم البحث فيها خطيا بمعلومة عناصر المصفوفة الاصغر
2_تنفيذ حلقين الدوران للتاكد من ان مصفوفة معينة فرعية من اخرى وطباعة الناتج
3_إنشاء حلقة دوران للتاكد من تطابق عناصر كلا المصفوفتين


الحل على النحو التالى :

الكود:

public class NewMain {

  
    
    static int compera(int A[], int B[]){
      
        int Size_A = A.length;
        int Size_B = B.length;
        int i = 0;
        int j = 0;
        
        
     if (Size_A > Size_B) {                 // اذا كانت حجم المصفوفة الاولى اكبر من حجم المصفوفة الثانية
        
          for (i = 0; i < Size_B; i++){         // حلقة دوران للمرور على كافة عناصر المصفوفة الثانية
        
            for (j = 0; j < Size_A; j++){       // حلقة دروان للمرور على كافة عناصر المصفوفة الاولى
            
                if(B[i] == A[j])                // جملة شرطية للتاكد هل جميع عناصر المجموعة الثانية تساوي قيم بالمصفوفة الاولى
                break;                          // اذا تم مطابقة قيمة يتم ايقاف حلقة الدوران الداخلية
            }
            
             if (j == Size_A){ return 0;} else{ return 1;}   // جملة شرطية للتاكد من تساوي قيمة مؤشر الحلقة الداخلية مع حجم المصفوفة الام
                                                             // اذا تساوى المؤشر معنى ذلك
                                                             //  استمر الدروان فى الحلقة الداخلية ولم يتم العثور على كافة العناصر
          }                                                  // و بالتالى ارجاع القيمة صفر التى تعبر عن ان تلك المصفوفة ليست فرعية من الاخري
            
     }else if (Size_A < Size_B)  {               // اذا كان حجم المصفوفة الثانية هى الاكبر تؤخذ كمصفوفة رئسية
            
            for (i = 0; i < Size_A; i++){        
        
            for (j = 0; j < Size_B; j++){      
            
                if(A[i] == B[j])                
                break;                          
            }
            
             if (j == Size_B){ return 0;} else{ return 2;}      
             }  
              
     } else if(Size_A == Size_B){                       // اذا كان حجم المصفوفات متساويات
        
            for ( i = 0; i < Size_A; i++)              // حلقة دوران باستخدام حجم احدي المصفوفتين
            if (A[i] == B[i]) return 3;                // ارجاع القيمة ثلاثة اذا تساوي جميع القيم فى كلا المصفوفتين
        
     }
        
      // غير ذلك من الحالات السابقة  
      return 0;
    }

    public static void main (String[] args)
    {
        int A[] = { 1,2,3,4,5 };
        int B[] = { 1,2,3,4,5 };
        
        switch (compera(A,B)){
          
          case 0:
             System.out.println("A And B Are Not Sub OF Each Other!");
             break;
          case 1:
             System.out.println("Array B is a subset of array A");
              break;
          case 2:
             System.out.println("Array A is a subset of array B");
             break;
          case 3:
             System.out.println("A And B Are Equal");  
        }

      
    }
}


    

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى