الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أريد ان أقرأ الصفوف صفا صفا

مغلق
بدأه نحلة نشيطة في 21 أبريل 2006 · 5 رد · 673 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لو كانت عندي هذه المشكلة و التي أحببت أن اشرحها عن طريق الصورة التالية

grid.jpg

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

شكرا مقدما لأية مساعدة

كما أريد أن أكون .. بأمر الله أكون

#2

اذامتل ما فهمت فلازم تعرفي مصفوفة من بعدين واعملي بحث صف صف بجملة for طبعا بتحتاجي جملتين for واحدة الصفوف والأخرى للأعمدة

واستخدمي عداد بعد عدد ال255 المتتالية ومتغير يحفظ موق البداية لأول255

هذه هي الفكرة

ان شاء الله تكوني فهمتي علي

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

#3

أعتقد أنك لم تكوني موفقة في طرح السؤال :) كما أنك لم تكوني موفقة في تسمية عنوان للموضوع :(

وفي الرسم قمتي بتسمية عدد الصفوف بـ H وعدد الأعمدة بـ w ثم وضعتي في النهاية Array[ i ] [ j ] l وأعتقد أنه كان المفروض استبدال القيم بـ h , w

أو التوضيح اذا كانت قيمة تنتمي لقيمة أخرى

بالنسبة للقيم الموجودة في المصفوفة هل هي عبارة عن integers وهي 0 أو 255 ( وهنا يمكن استخدامه بـ boolean ) أم هي قيم بين القيمتين

ومتى سنعتبر أن هناك سلسلة من الارقام بقيمة 255 ؟

حيث يبدو في الصورة أن السلسلة اعتبرتيها عبارة عن مربعات متتالية عددها أكثر من عشرة ، ولم تعتبري الستة مربعات المتتالية سلسلة ( إذا يجب أن نتفق على رقم )

ولكن أعتقد أن الفكرة العامة هي كما قال الأخ white_soul بالاضافة إلى عمل counter integer يكون في داخل if حيث يزداد في داخل ال for loop الداخلية ليعد ارقام الـ 255 ثم يعود للصفر بعد انتهاء ال for loop الداخلية ( آخر ال foor loop الخارجية )

وأعتقد أنك ستحتاجين إلى array ثانية من صف واحد بحيث تكون boolean أو integer ( صفر أو واحد ) حيث تقومي بوضع واحد اذا عثرتي على سلسلة وصفر إذا لم تعثري

ثم بعد ذلك التعامل مع المصفوفة الجديدة

#4

مع ملاحظة أن طول المصفوفة الثانية يساوي عدد صفوف المصفوفة الثنائية الأولى = h

#5

يمكن نسخ هذا الكود والقيام بتشغيله

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

استخدمت رقم integer اسميته بـ limit هذا الرقم يحدد طول السلسلة المطلوبة حيث اذا كان هذا الرقم = 3 فإن أي صف يحتوي على سلسلة أرقام 255 أقل من ثلاثة لن يعتبر يحتوي سلسلة

الكود :

public class Hadi {

    public static void main(String[] args) {
        //you can run this matrix and comment the second one
        //int matrix[][]=new int[10][10];
        
        int[][] matrix={{0,255,255,255,0,255,255,255,255,255},
                        {0,255,255,255,0,255,0,255,255,255},
                        {255,255,255,255,0,255,0,0,255,255},
                        {0,0,0,0,0,255,0,0,0,255},
                        {0,255,255,255,0,255,0,0,255,255},
                        {0,255,255,255,0,255,0,0,255,255},
                        {0,255,255,255,0,255,0,0,255,255},
                        {0,255,255,255,0,255,0,0,255,255},
                        {255,255,255,255,255,255,255,255,255,255},
                        {255,255,255,255,0,255,255,255,0,255}};
                        
        int arr[]=new int[10];
        int counter=0;
        int limit=3; // the sequence number
        
        for(int i=0;i<10;i++){//rows
            
         for(int x=0;x<10;x++){//columns
             
            if(matrix[x]==255){
             counter++;   
            }
            ////
            else{
             if(counter<limit)   
                counter=0;
             else {
                 if(counter>=arr)
                 arr=counter;
                 
                 counter=0;
             // continue;   
             }
            }
          //////  
           if((counter>=arr)&&(counter>limit))
                 arr=counter;  
         }  
         
         counter=0;
            
        }
        
       //To print the length of every line 
        for(int v=0;v<arr.length;v++)
            System.out.println(arr[v]+"");
      
    }
    
}
#6

أخي أو اختي النبراس جعلك الله نبراساً لكل خير. كان ردك بداية الحل الذي توصلتُ له. و من لم يشكر الناس لم يشكر الله ، لذا لك صادق المودة و الشكر.

كما أريد أن أكون .. بأمر الله أكون

هذا الموضوع مغلق.

مواضيع مشابهة