قواعد المشاركة في المنتدى

(قسم الاعلانات) الموضوع:معرض مطابخ مودرن ، هيفين هوم للمطابخ والاثاث ، ضمان 5 سنين ، توصيل وتركيب مجانا 01275599927 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:شركة تنظيف منازل وفلل العين 0564245292 المتميز بواسطة: (zena fathy) :: (قسم الاعلانات) الموضوع:معرض اثاث مدينة نصر. شركة فورنيدو للاثاث والمطابخ . التوصيل لاى مكان داخل مصر 01270001596 بواسطة: (مارلين سامي) :: (أخبار التكنولوجيا) الموضوع:علاج إدمان الهواتف المحمولة بواسطة: (Nesma Omar) :: (قسم الاعلانات) الموضوع:أسعار تصميم بروفايل الشركات تكلفة تصميم بروفايل شركة بواسطة: (ضياء روحي) :: (قسم الاعلانات) الموضوع:شركات تعقيم المنازل الشارقة 0562570996 العناية بواسطة: (zena fathy) :: (قسم الاعلانات) الموضوع:عشب صناعي بواسطة: (الغرووووب) :: (قسم الاعلانات) الموضوع:محلات غرف نوم. شركة فورنيدو للاثاث والمطابخ . التوصيل لجميع محافظات مصر 01270001597 بواسطة: (مارلين سامي) :: (قسم الاعلانات) الموضوع:شركات تصميم مطابخ فى مصر ، هيفين هوم للمطابخ والاثاث ، توصيل وتركيب مجانا ،ضمان 01122267552 بواسطة: (مليكة سمير) :: (أخبار التكنولوجيا) الموضوع:لماذا تحتاج إلى أفضل مكاتب ترجمة بالعربي ؟ بواسطة: (منة إجادة) :: (قسم الاعلانات) الموضوع:صور مطاعم ولاند سكيب هارد وسوفت سكيب مع شركة عقارى للتنمية وادارة المشروعات 01020115117 بواسطة: (سامى سعد) :: (قسم الاعلانات) الموضوع:معارض اثاث مدينة نصر.شركة فورنيدو للاثاث والمطابخ . ضمان 5 سنين 01270001596 بواسطة: (مارلين سامي) :: (قسم الاعلانات) الموضوع:مطبخ polylac acrylic - التوصيل لجميع محافظات مصر - ضمان 01013843894 بواسطة: (marsel emad) :: (قسم الاعلانات) الموضوع:شركة تصميم حدائق منزليه بالرياض بواسطة: (اسماء عومر) :: (قسم الاعلانات) الموضوع:شركات مطابخ في مدينة نصر ، هيفين هوم للمطابخ والاثاث ، توصيل وتركيب مجانا ،ضمان 01122267552 بواسطة: (مليكة سمير) :: (قسم الاعلانات) الموضوع:تسوق فيتامينات اونلاين من فيتازون بواسطة: (اسماء عومر) :: (قسم الاعلانات) الموضوع:أفضل شركة إعلام وأخبار وترفيه على الإنترنت بواسطة: (كريم يونس) :: (قسم الاعلانات) الموضوع:فيل مور الاميريكى للضعف الجنسى بواسطة: (اسماء عومر) :: (قسم الاعلانات) الموضوع:Tempur-Pedic يساعد على تلبية قائمة دلو رجل يحارب السرطان بواسطة: (rowidaphil93) :: (قسم التطوير والاقتراحات) الموضوع:دورة دراسة أسواق الأسهم المحلية وتحليل التقارير المالية بواسطة: (إيمان بدر)

المواضيع المثبته: (منتدى Microsoft Visual Basic) الموضوع:الموضوع الشامل عن جهاز الباركود BarCode بواسطة: (Max Bayne) :: (منتدى تحليل و تصميم نظم المعلومات) الموضوع:ما هو تحليل النظم System analysis بواسطة: (jbsa) :: (منتدى الوورد والباور بوينت) الموضوع:برنامج عملاق باللغة العربية بواسطة: (هنوشه) :: (منتدى ADO.NET العام) الموضوع:البدء مع ADO.NET بواسطة: (HnHn) :: (منتدى Microsoft Excel) الموضوع:open office بواسطة: (ramies) :: (القسم المفتوح) الموضوع:الأعمــــال الصالحة المستمــرة للإنســـان بعد وفاته بواسطة: (عبدالله جابر شقليه) :: (منتدى برمجة التقارير) الموضوع:اصنع تقريرك في اقل من دقيقه واستغني عن الكريستال ريبورت بواسطة: (mero_make) :: (قسم المواضيع المميزة) الموضوع:تحديث قاعدة بيانات لدى عميل عن طريق الإنترنت... بواسطة: (أبو رهف) :: (منتدى أجاكس(Asynchronous JavaScript and XML)) الموضوع:نبذة مختصرة عن تعريف تقنية أجاكس بواسطة: (عبدالله جابر شقليه) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:اعداد و تنصيب اوراكل 9i ويندز NT/2000/XP بواسطة: (oracle_egypt) :: (منتدى Microsoft Visual Basic) الموضوع:دورة التعامل مع Data Report باستخدام ADODC ( شرح بالصور ) بواسطة: (Max Bayne) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:دورة في LINQ To DataSet بواسطة: (jbsa) :: (منتدى برمجة التقارير) الموضوع:مثال Crystal Report بواسطة: (شهرزاد) :: (Oracle قسم قواعد البيانات أوراكل) الموضوع:تفقيط الأرقام للغة العربية تحت بيئة oracle pl sql بواسطة: (adnan_som) :: (منتدى برمجة الجرافكس) الموضوع:الجزء الثانى من دروس تعلم GDI بواسطة: (alaa gomaa) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:الادوات الجديده Controls فى الدوت نت بواسطة: (alaa gomaa) :: (منتدى برمجة الجرافكس) الموضوع:كلمه بخصوص قسم الجرافيك الجديد بواسطة: (alaa gomaa) :: (منتدى Microsoft Visual Basic) الموضوع:عرض الصور المخزنه في قاعدة البيانات بالكريستال ريبورت بواسطة: (ابو حمد) :: (منتدى الدعم الفني للماسنجر المحيط العربي) الموضوع:مشاكل ماسنجر المحيط العربي بواسطة: (jbsa) :: (منتدى ADO.NET العام) الموضوع:الطريقة السهلة لربط سي شارب بقاعدة بيانات اكسيس بواسطة: (kal7hos)

إضافة رد إضافة موضوع جديد

> إستخدام BinarySearch مع Custom Object
Bookmark and Share
تقييم الموضوع Label معدل التقيم:0
مشاركةالسبت,09/ذو القعدة/1431 هـ,04:27 مساءً
المشاركة #1

المراقب العام
Joseph
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 2893
سجل في:الاثنين,26/ربيع الأول/1427 هـ,07:49 صباحاً
الدولة:الأردن
رقم العضوية: 10102



سأوضح في هذا الموضوع كيفية إستخدام BinarySearch مع Custom objects.
في البداية سنعرف BinarySearch Method و استخداماتها :

BinarySearch Method

Binary Search هي algorithm معروفه للبحث و يمكننا استخدم دالة جاهزة مع الدوت نت مثل الـ One-dimensional Array و ArrayList و Generic Collections.

هناك اكثر من overload لهذه الميثود من أهمها

BinarySearch<T>(T[], T)


و

BinarySearch(Array, Object)



في مثالنا سنستخدم الOverload الاول الذي يستخدم IComparable<T> generic interface.

قبل أن أبدأ بالبحث بين ال Object سارفق مثال بسيط توضيحي لكيفية عمل هذه الميثود مع array of string

static void Main(string[] args)
        {
            string[] persons = { "Ahmad", "Yaser", "Belal" };
            Array.Sort(persons);
            //After sort will be { "Ahmad", "Belal", "Yaser" }
            int index = Array.BinarySearch(persons, "Yaser");

            if (index < 0)
            {
                Console.Write("Not found. ");
            }
            else
            {
                Console.WriteLine("Found at index {0}.", index);
            }
        }



نبدأ مثالنا بالخطوات التالية :
1- ننشأ الكلاس التالي:

public class Person
    {

        #region Constructor
        public Person(string first, string last)
        {
            FirstName = first;
            LastName = last;
        }
        #endregion 
        #region Properties
        public string  FirstName{set;get;}
        public string LastName { set; get; }        
        public string FullName
        {
            get
            {
                return FirstName + " " + LastName;
            }
        }
        #endregion 
    }


2- نعمل implement ل IComparable<T> generic interface.

الBinarySearch تستخدم CompareTo ضمن IComparable Interface بحث بهذه الدالة نحدد ما هو الشيئ الذي نريد ان نقارنه
في مثالنا نستطيع ان يكون وجه المقارنه FirstName او LastName او FullName.

الImplementation يكون كالتالي :

 public class Person:IComparable<Person>
    {

        #region Constructor
        public Person(string first, string last)
        {
            FirstName = first;
            LastName = last;
        }
        #endregion 
        #region Properties
        public string  FirstName{set;get;}
        public string LastName { set; get; }        
        public string FullName
        {
            get
            {
                return FirstName + " " + LastName;
            }
        }
        #endregion 
    
        #region IComparable<Person> Members

        public int CompareTo(Person other)
        {
            return this.FullName.CompareTo(other.FullName);
        }

        #endregion
    }



3- و اخيرا حتى نستخدم هذا الكود نعرف عدد من الObject من هذا الكلاس و نضعه داخل مصفوفه و نرتبها بستخدام Array.Sort بحيث اناه ايضا تستخدم CompareTo Method السابق للترتيب .



static void Main(string[] args)
        {

            Person ahmad = new Person("Ahmad", "bushnach");
            Person bassl = new Person("Bassl", "shadow");
            Person jehad = new Person("Jehad", "beginner");

            Person[] Brother = { jehad, ahmad, bassl };


            Person jehad2 = new Person("Jehad", "beginner");

            Array.Sort(Brother);

            int indexResult = Array.BinarySearch(Brother, jehad2);

            string outputMessage = string.Empty;
            if (indexResult < 0)
            {
                Console.WriteLine("The object to search  is not found. The next larger object is at index ." + ~indexResult);
            }
            else
            {
                Console.WriteLine("The object to search  is at index " + indexResult);
            }
           
        }



أرجو أن يكون المثال واضح و مفيد .
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,11/ذو القعدة/1431 هـ,05:37 صباحاً
المشاركة #2

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 9
سجل في:السبت,19/رمضان/1431 هـ,02:27 صباحاً
الدولة:سوريا
رقم العضوية: 95866



شكرا يا أخ يوسف على الشرح الوافي لكن المشكلة التي أواجهها دائمأ هي في ; (Array.Sort(Brother

حيث يرمى Failed to compare two elements in the array ) : exception )


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,11/ذو القعدة/1431 هـ,05:45 صباحاً
المشاركة #3

المراقب العام
Joseph
الرتبة في المنتدى:عماد



المجموعة: الإدارة
المشاركات: 2893
سجل في:الاثنين,26/ربيع الأول/1427 هـ,07:49 صباحاً
الدولة:الأردن
رقم العضوية: 10102



هذا الخطا يظهر اذا لم تكن عامل Implement لل IComparable Interface
لانه عند الترتيب و البحيث يستخدم CompareTo و اذا لم يجدها لا يستطيع المقارنه بين عناصر المصفوفه كما هو موضح بال exception السابق.

أرجو ان تكون النقطه واضحه.
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,18/ذو القعدة/1431 هـ,02:27 صباحاً
المشاركة #4

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 9
سجل في:السبت,19/رمضان/1431 هـ,02:27 صباحاً
الدولة:سوريا
رقم العضوية: 95866



شكراً جزيلاً على ارشادك لي يا صديقي لقد عملت المصفوفة بشكل جيد و دون أخطاء .
تحياتي لك ...


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,13/محرم/1433 هـ,12:23 مساءً
المشاركة #5

الرتبة في المنتدى:ملازم

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 50
سجل في:الخميس,13/محرم/1433 هـ,12:02 مساءً
الدولة:البارجواي
رقم العضوية: 99363



great work man


--------------------

برمجة وتصميم المواقع

programmer4ever@ yahoo.com
http://maktba.clanteam.com/

للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,01:04 مساءً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)