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

البحث من خلال المعاملات الثنائية Bitwise Operators

مغلق
بدأه الحسين في 20 ديسمبر 2004 · 6 رد · 740 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

لنفترض أنك تعرضت يوما ما إلي حالة برمجية جعلتك تحتاج إلي عمل دالة تقوم بإجراء بحث عن شئ معين داخل مصفوفة ما , ولكن

الجديد هذه المرة أن عملية البحث سوف تتم بشكل مختلف نوعا ما

حيث سوف يكون من المتوقع أن يمرر إلي هذه الدالة قيم غير متوقعة إلي حدما , ربما يكون هذا الكلام غامض لذلك دعنا نأخذ مثال يوضح هذا الأمر

مثال

نفترض أننا نملك فئة باسم Person

تحتوي علي متغيران وهما اسم الشخص personName و الدولة محل ميلاده country

كما يلي

/** Person Class */
class Person
{
    var $personName;
    var $country;

    function Person($personName, $country) {
        $this->personName = $personName;
        $this->country = $country;
    }
}

ثم قمنا بعمل مصفوفة لبعض الأشخاص

مثلا كما يلي

/** making array of persons */
$p1  = new Person("person 1" , فلسطين);
$p2  = new Person("person 2" , سوريا);
$p3  = new Person("person 3" , مصر);
$p4  = new Person("person 4" , الأردن);
$p5  = new Person("person 5" , فلسطين);
$p6  = new Person("person 6" , مصر);
$p7  = new Person("person 7" , العراق);
$p8  = new Person("person 8" , اليمن);
$p9  = new Person("person 9" , مصر);
$p10 = new Person("person 10", اليمن);
$p11 = new Person("person 11", سوريا);
$p12 = new Person("person 12", مصر);
$p13 = new Person("person 13", مصر);

$persons = array( $p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9, $p10, $p11, $p12, $p13 );

فقد قمنا بتعريف 13 شخص في المصفوفة persons

ولكل شخص تم تعريف اسمه والدولة محل ميلادة

حيث تم تعريف ثوابت للدول كما يلي

ولكن ينبغي عليك أنت تحديد قيم هذه الثوابت

/** Country Constants */
define("مصر"  , ???? );
define("سوريا"  , ???? );
define("السعودية" , ???? );
define("العراق"  , ???? );
define("اليمن"   , ???? );
define("المغرب"  , ???? );
define("ليبيا"   , ???? );
define("السودان" , ???? );
define("الكويت"  , ???? );
define("تونس"  , ???? );
define("فلسطين"  , ???? );
define("الأردن"  , ???? );
define("الإمارات" , ???? );
define("البحرين" , ???? );
define("الجزائر" , ???? );

المطلوب

عمل دالة باسم FindPersons يمرر لها دولة أو أكثر ثم تقوم بالبحث داخل مصفوفة الأشخاص السابقة

الذين يتبعون هذه الدول ثم تقوم بإرجاع أسماء هؤلاء الأشخاص

مثال لطريقة إستدعاء هذه الدالة

FindPersons(مصر);
FindPersons(مصر | فلسطين);
FindPersons(اليمن | فلسطين);
FindPersons(اليمن | فلسطين | مصر);
FindPersons(اليمن | فلسطين | مصر | سوريا);

وهكذا يتم إستدعاء هذه الدالة ويتم تمرير الدول لها بشكل غير متوقع

أرجو أن يحالفكم توفيق الله لعمل هذه المهمة

في إنتظار إجاباتكم عن حل هذه المشكلة البرمجية وسوف أطرح عليكم حل هذه المشكلة بعد يومين إن شاء الله ,وبالله التوفيق

والسلام عليكم

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#2

السلام عليكم ،،

لقد مضى يومان ،، ارجو أن تضح الحل ، واتمنى ان تتابع الموضوع

#3

بسم الله الرحمن الرحيم

الحل

أرجو أن تكون هذه الطريقة مفيدة لعمل بحث بالكود , وبالله التوفيق

Bitwise Search PHP.rar

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#4

يبدو أني أقحمت نفسي في موضوع أكبر مني :s

في الواقع لم افهم الكود ... ارجو ان تشرحة

#5

بسم الله الرحمن الرحيم

قبل أن أقوم بشرح حل المشكلة السابقة

ينبغي علي أولا أن أشرح كيفية التعامل مع المعاملات الثنائية Bitwise Operators

ومعاملات الإزاحة Shift Operators

تابع المقال التالي

معاملات التعامل بالنظام الثنائي Bitwise & Shift Op

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

والسلام عليكم

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#6

إتضحت الصورة لدي لست بحاجة للشرح ،

فكما فهمت خصصت بت لكل دوله ثم عن طريق الإستعلام عن قيمته تعرف إن كانت الدوله مطلوبة أم لا ،

مثلا:

00001 -> السعودية

00010 -> مصر

.....

10000 -> فلسطين

.... الخ

فلو اردنا الاستعلام عن دولتي مصر والسعودية فيسكون الرقم: 11

وهو ناتج العملية المنطقية 1|10 المستخدمة في دالة البحث.

المعاملات المنطقية ممتعة للغاية فهل من مزيد عن تطبيقاتها :)

#7

ممتاز أخوي Teao , هذه فعلا هي الفكرة

اقتباس
يبدو أني أقحمت نفسي في موضوع أكبر مني 

الأن ولله الحمد أنت أكبر من هذا الموضوع __027

وبالله التوفيق

والسلام عليكم

تم تعديل هذه المشاركة بواسطة الحسين في 26 ديسمبر 2004 في 09:58

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

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

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