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

السؤال الأسبوعي

مغلقرائج
بدأه HMS في 17 يناير 2005 · 265 رد · 18,628 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#176
اقتباس
والاخت بنت اليمن عارفا السكه وجلوسها فى هذا القسم ماهو إلا فتره تمرد على قسم الاسمبلى وحتعدى إن شاء الله.

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

حياك الله اخي احمد .. و الله انا نفسي و منى عيني ارجع الى الاسمبلي ، خصوصاً و ان الافكار الحلوة كلها عندكم في قسم الاسمبلي ، بس بصراحة خايفة على شبابي يكمل و انا لسة في الـ 16 بت :D .. و بعدين صدقني الـ VB.Net طلع حاجة حلوه فعلاً .. و اعتقد انك راح تكون عضو المميز في الـ Vb.net لو قررت تدخل المجال .. و عموماً حتى لو قررت ما تدخل هذا المجال فلا تحرمنا من مشاركتك هنا :) .. و بعدين خروفك المحشي هذا ما يقدر يكمل جميله و يخذ له خطوتين الى قسم VB.Net ??? :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#177

السلام عليكم ورحمة الله

الأخت الفاضلة

حل جميل جداً ، ولكن هذا لو أننا نستخدم الحل من داخل فورم آخر كما ذكرت أنت :

اقتباس
و عندما نريد استدعاء الدالة من اي Form اخر في المشروع و ليكن الـ Form2 سوف يكون الاستدعاء كما يلي :
Form1.sum(2, 3)

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

لذلك تفضل أستاذنا الكريم رغيد الطيب وقام باستخدام :

Me.FindForm

وهذا الكود يقوم بإخبارنا ما هو الفورم الحاوي للأداة ، فكلمة Me هنا تشير للأداة ، ولكنه كما ذكر في الحل الرائع استخدم النوع Object لكي يتمكن من التعامل مع الفورم مباشرة لأنه لو استخدم النوع Form لاختلف الأمر ، فبهذا التعريف الجديد لن يستطيع الوصول إلى دوال النموذج المحدد

لذا أضفت إضافة بسيطة على السؤال لنزيد الفائدة ، وقلت :

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

أنا متأكد أنني لو كنت أستطيع التوضيح أكثر لما أخذ السؤال من أخت في مستواك البرمجي ، أومن من أحد من إخواني الأحبة دقائق ، لكن يظهر إن أنا المشكلة مش السؤال :(

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

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

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

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

الحقوا نفسكم يا شباب أخوكم أحمد غريب عاوز يفك شفرتكم من فيجوال بيسك دوت نيت إلى الأسيمبلي يعني بيحاول يعمل ليكم كراك (disassembly) :)

خلي بالكم

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

حبيبنا undo ظهر أخيراً ! ، يا مرحباً أين أنت يارجل ؟ اسأل الكل حيقوا انه افتقدك ، بلاش تغيب عنا :)

وجزاك الله خيراً على تعديل اسم الموضوع

تم تعديل هذه المشاركة بواسطة محمد النحراوي في 4 مارس 2005 في 00:29

#178

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

السلام عليكم و رحمة الله وبركاته

الشكر الجزيل للأخ العزيز أحمد غريب على تشريفه لنا في الـ Visual Basic .NET التي لا يوجد لدي شك ايضاً بانك لو جربتها ربما تفقد حماسك للاسمبلي على الرغم من روعتها هي الاخرى.

و احببت ان انوه هنا الى اني كتبت كمثال :

78 XOR 1 = 99

وهو غير صحيح لاني قصدت 79 وليس 99 .... أي :

78 XOR 1 = 79

كما انه و للاسف الشديد اننا في الفيجوال بيسك لا يوجد لدينا NOR و NAND بشكل مباشر .. و لكن يمكن الحصول عليهما من نفي الـ AND و OR أي بإضافة NOT لهما .

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

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

على العموم اذا قصدت ان نستدعي الدالة عن طريق إسمها كنص "Sum2Nums" فكأنك تجبرنا على الاتجاه نحو عمل Reflection بالشكل التالي :

	Function Caller(ByVal N1 As Integer, ByVal N2 As Integer) As Integer
  Dim F As Form = Me.FindForm
  Return F.GetType.GetMethod("Sum2Nums").Invoke(F, New Object() {N1, N2})
	End Function

لاحظ ان الدالة تستدعي الدالة الاصلية بإسمها ..

و إن اردت ان اختصر فالاعتماد على CallByName حل لذلك بإذن الله تعالى :

	Function Caller(ByVal N1 As Integer, ByVal N2 As Integer) As Integer
  Return CallByName(Me.FindForm, "Sum2Nums", CallType.Method, N1, N2)
	End Function

و لعله يفي بالغرض بإذن الله.

و لكي نعمم المسئلة Generlization يمكن ان نحور الدالة بالشكل التالي :

	Function myCaller(theName As String, ByVal ParamArray Args() As Object) As Integer
  Return CallByName(Me.FindForm, theName, CallType.Method, Args)
	End Function

بهذه الدالة العامة يمكن استدعاء اي دالة بإذن الله تعالى على الفروم الاصلية ... فلو ان لدينا دالتين احدهما هي الدالة تبعك المسماه Sum2Nums و اخرى اسمها مثلا Cube و تقوم بحساب مكعب العدد المدخل شفرتها كالتالي :

Function Cube(N As Integer) As Integer
Return N * N * N
End Function

فلكي تستدعي الدالتين بإستخدام دالتنا العامة اكتب التالي :

MsgBox( myCaller("Sum2Nums", 4 , 5) )

وبالتالي فإن الناتج إن شاء الله هو 9 ( مجموع 4 و 5 ) ... و الدالة الثانية Cube بالشكل التالي :

MsgBox( myCaller("Cube", 2 ) )

و الناتج بإذن الله تعالى هو 8 ونتج عن ( 2 * 2 * 2 )..

إن كان مافهمته صحيح فالحمد لله تعالى .... و ننتظر سؤالا اخر بإذن الله من اي فرد من الشباب او تصعيبا آخر من النحراوي لعل الله ان يعيننا على الإجابة عليه .... و إن لم يكن فننتظر ان نجد من يحل لنا تشفير السؤال ...

صحيح اتمنى ان يشاركنا شباب الـ #C لانه بالتأكيد اسألتهم ستكون معقدة و تحتاج الى تفكير عميق.

السلام عليكم و رحمة الله وبركاته

مواضيع برمجية تقنية جديدة

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

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

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

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

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

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

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

مواضيع برمجية تقنية قديمة

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

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

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

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

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

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

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

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

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

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

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

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

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

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

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

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

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

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

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

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

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

#179

وعليكم السلام ورحمة الله وبركاته

جزاكم الله خيراً أخي الطيب :)

هذا هو فعلاً ما قصدته .. استخدام الـ Reflection ، ولقد أجبت ووفيت وهي الإجابة التي كنت أنتظرها

والدالة المختصرة الأخيرة التي أنشئتها myCaller بالفعل رائعة وهي تشبه ال Invoke نوعاً ما ، ولكنها أيسر

بارك الله لك

وأعتذر للإخوة إن كان سؤالي غامضاً

وجزاهم الله خيراً

#180

السلام عليكم

الاخ الحبيب رغيد انا إعتراضى ليس فى جمال لغه vb ولكن فى إمكانيات اللغه, إسمح لى ان اشرح ما اقصد.

كان لى صديق كتب برنامج يقوم بوضع ايات القران الكريم فى برنامج chat وكتب البرنامج بلغه vb ثم ارسله إلى.

كانت هناك عدة مشاكل فى البرنامج

المشكله الاولى حجم البرنامج كان اكثر من 2 ميجا , وهو لا يحوى سوى نصوص فقط, نفس البرنامج بلغه الاسمبلى لا يتجاوز 100 كيلو.

المشكله الثانيه عندما حاولت تشغيل البرنامج لم يعمل مباشرتاً والسبب هو انه كان ينقصنى ملف ocx لانه إستخدم component تتطلب هذا الملف.

والمشكله الاخيره هى ان البرامج المكتوبه بلغة vb بطيئه للغايه, فهى ابطاء من السى بلس بلس, ومن الدلفى, وذالك لان حجم الشفره يتضخم.

انا طبعاً اسف على إنتقاد اللغه فى عقر دارها, ولكن الحق لابد ان يقال.

والان تصحيح بسيط نبهنى إليه الاخ رغيد بارك الله فيه :

Return (N Xor 1) <>1

هذا الكود خطاء والمفروض يكون هكذا

Return (N Xor 1) <> N

اما بالنسبه للخروف فياريت كان الواحد يقدر يعزمكم على خروف حقيقى للاسف كل واحد فينا عايش فى بلد ابعد من الثانى, وانا شخصياً عايش ابعد واحد فيكم والله المستعان.

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

تم تعديل هذه المشاركة بواسطة احمد غريب في 5 مارس 2005 في 11:53

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#181
اقتباس
صحيح اتمنى ان يشاركنا شباب الـ #C لانه بالتأكيد اسألتهم ستكون معقدة و تحتاج الى تفكير عميق.

لا ابداً .. اسئلتهم كلها سهلة يا راجل:D :D .. ده شباب الفيبي اللي بيجاوبوا دائماً على اسئلتهم و اسأل مشرفيهم :P :P

اقتباس
المشكله الاولى حجم البرنامج كان اكثر من 2 ميجا , وهو لا يحوى سوى نصوص فقط, نفس البرنامج بلغه الاسمبلى لا يتجاوز 100 كيلو.

2 ميجا بس.. يعني 6 دقائق بالdialup و 30 ثانية بالdsl.. الا لو كانت عندك المشكلة في المساحات على الهارد ديسك :P

اقتباس
المشكله الثانيه عندما حاولت تشغيل البرنامج لم يعمل مباشرتاً والسبب هو انه كان ينقصنى ملف ocx لانه إستخدم component تتطلب هذا الملف.

حكاية الاعتماد على ملفات اخرى ميزة مهولة و ليس عيب .. لانها تسمح لك بتنفيذ مبدأ هام من مبادئ الOOP و هو الencapsulation .. يعني هل الافضل انك تكتب وظائف الocx بنفسك أم تستخدم الملف مباشرةً و تحل مشاكل بسيطة قد تواجهك اثناء التنصيب؟

اقتباس
والمشكله الاخيره هى ان البرامج المكتوبه بلغة vb بطيئه للغايه, فهى ابطاء من السى بلس بلس, ومن الدلفى, وذالك لان حجم الشفره يتضخم

حكاية السرعة و الحجم كلها اصبحت لا تشكل اي مشاكل .. انت تتكلم عن اجهزة متوسط سرعاتها 2 جيجا هرتز.. و تتضاعف سرعاتها كل سنتين.

كما قال باتريك هايندز (من مؤتمر مايكروسوفت).. حالياً، يوجد فجوة بين السوفت وير و الهاردوير .. لان الهاردوير تتضاعف امكانياتها بينما متطلبات السوفت وير من الهاردوير تزيد بمعدل بسيط.

يعني هل تعلم ان بيئة الدوت نت اساساً ابطأ بكثييير من برامج الفيبي 6؟ و هذه ليست مشكلة اساساً.. لاننا بنتكلم عن اجهزة اسرع بكثييييييييييييييييييييييير من 7 سنين (ايام ظهور الفيبي6)..

بالنسبة لي, و كالعادة .. معياري الاول هو : السهولة..

السهولة في التعلم

السهولة في اداء الوظائف

السهولة في الوصول لكافة مكونات اللغة و بيئة التطوير ببضع ضغطات.

السهولة في الحصول على معلومة احتاجها من ملفات المساعدة

و كلهاااااا اشياء في صالح الفيبي

يعني انا اعترف بان سباق القوة ليس في صالح الفيبي لكن من المؤكد ان مقياس السهولة كذلك

اقتباس
اما بالنسبه للخروف فياريت كان الواحد يقدر يعزمكم على خروف حقيقى للاسف كل واحد فينا عايش فى بلد ابعد من الثانى, وانا شخصياً عايش ابعد واحد فيكم والله المستعان.

يااااااااااه .. رجعت في كلامك ليه؟؟ :D :D :D

لمّا انزل السويد ان شاء الله اعمل حسابك على خروف محشئ :D :D

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#182

يعيش undo نصير مبرمجي الـ VB.Net .. يعيش ... يعيش

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#183

يبدو أنه فاتني الكثير هنا، مع ملاحظة بأن سؤال الأسبوع أصبح سؤال يومي....

من هو صاحب الحق في طرح سؤال الأسبوع القادم؟؟؟ نرجو أن يقوم بذلك.

Learn Japanese :>>> http://www.nouben.com/

#184
اقتباس
يعيش undo نصير مبرمجي الـ VB.Net .. يعيش ... يعيش

:D :D :D

اقتباس
من هو صاحب الحق في طرح سؤال الأسبوع القادم؟؟؟ نرجو أن يقوم بذلك.

المفروض انه رغيد لأنه اجاب على سؤال النحراوي .. لكن أرى ان اي شاب موجود يقوم بالسؤال .. يعني اتكل على الله و قول سؤال يا هارون ;)

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#185

السلام عليكم

أخونا هارون وصل ! الحمد لله

سؤال الأسـ ... اليوم ملهوش طعم من غيرك

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

:D

المهم يا رب نسمع أخبار حلوة قريب يا أبا محمد (لازلت مصراً)

وهيا انطلق إلى السؤال ، ويا رب المرة دي شباب السي شارب يجرؤوا على دخول العرين ، لكن يبدوا أنهم لازالوا مترددين :rolleyes:

وعقبال خبيني ما يرجع بالسلامة هو كمان

:)

تم تعديل هذه المشاركة بواسطة محمد النحراوي في 6 مارس 2005 في 18:31

#186

سأطرح سؤال هذا الأسبوع مع يقيني بأنني لا أصلح لذلك (لاحظوا بأن هذه المشاركة لم تنجح إلا بعد أن توقفت أنا عن طرح الأسئلة :( ).

السؤال:

أريد أن أعمل Array من 20 عنصر (أعداد صحيحة Integers من الواحد وحتى العشرين)، شريطة أن أختار عناصرها عشوائياً وشريطة أن لا يتكرر رقم معين في أكثر من عنصر من عناصر المصفوفة...

بصيغة أخرى، أريد أن أوزع الأرقام من 1 الى 20 في مصفوفة مكونة من عشرين عنصراً، بحيث يكون ذلك التوزيع عشوائياً.

تم تعديل هذه المشاركة بواسطة HMS في 7 مارس 2005 في 00:14

Learn Japanese :>>> http://www.nouben.com/

#187

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

دالة بسيطة لتكوين اي عدد من الارقام العشوائية غير المتكررة في مصفوفة :

	Function RandomArray(ByVal Length As Integer) As Integer()
  Dim Rand As New Random(Environment.TickCount)
  Dim Arr(Length - 1), Tmp, Idx, Pos As Integer

  For Pos = 0 To Length - 1
 	 Arr(Pos) = Pos + 1
  Next

  For Pos = 0 To Length - 1
 	 Idx = Rand.Next(Pos, Length)
 	 Tmp = Arr(Pos)
 	 Arr(Pos) = Arr(Idx)
 	 Arr(Idx) = Tmp
  Next

  Return Arr
	End Function

بحيث يمكنك تمرير الطول الذي تريده للمصفوفة في المدخل Length .. للتجربة و رؤية النواتج في مربع نص .. جرب التالي :

Me.ListBox1.DataSource = RandomArray(10)

السلام عليكم و رحمة الله و بركاته

مواضيع برمجية تقنية جديدة

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

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

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

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

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

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

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

مواضيع برمجية تقنية قديمة

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

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

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

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

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

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

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

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

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

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

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

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

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

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

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

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

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

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

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

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

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

#188

السلام عليكم ..

ساضع لكم على عجالة الفكرة التي فكرت بها للحل .. و هي تختلف عن حل الأخ رغيد ..

الفكرة هي :

- عمل حلقة دوران من 1 الى 20 (و هي الاعداد المطلوب توزيعها عشوائياً المصفوفة) .. (counter)

- اختيار عنصر (index) من المصفوفة بشكل عشوائي على شرط (if) ان تكون قيمة العنصر اصلاً تساوي صفر (اي لم تتم ادخال اي قيمة له بعد) ... و مثما يتم ادخال القيمة الحالية للاعداد من 1 الى 20 لها (الحلقة الخارجية الاصلية ) ..

- في حالة ان كان الـ index لا يساوي صفر (اي ان هناك قيمة قد تم وضعها به) .. سوف نقوم بعمل حلقة دوران من اول عنصر في المصفوفة الى الخر عنصر .. مهمتها ان تبحث عن اول عنصر يساوي صفر (اي لم يتم ادخال عنصر له) .. و في حالة ان وجدنا العنصر فارغ ، اعطيه الرقم الحالي من الترتيب 1 الى 20 (اي الحلقة الخارجية الاصلية) ثم اخرج من حلقة البحث عن اول عنصر فارغ بـ Exit For .. اليكم الكود :

        Dim Rnd As New Random()
        Dim index, counter, index2 As Integer
        Dim a(19) As Integer


        For counter = 1 To 20
            index = Rnd.Next(0, 19)
            If (a(index) = 0) Then
                a(index) = counter
            Else
                For index2 = 0 To a.Length - 1
                    If (a(index2) = 0) Then
                        a(index2) = counter
                        Exit For
                    End If
                Next
            End If
        Next

و يكمن مشاهدة المصفوفة بعد توزيع الارقام عشوائياً عليها :

        For counter = 0 To a.Length - 1
            TextBox1.Text = TextBox1.Text + "   " + a(counter).ToString
        Next

طبعاً انا لا اعتقد انه الحل الافضل .. ولكن ما رأيكم ،،

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 7 مارس 2005 في 13:52

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#189

السلام عليكم ورحمه الله وبركاته

بصرحه انا بعد ما شفت حل الاستاذ رغيد ما لم استطع ابدا التفكير في حل ،،،،،

ما شاء الله تبارك الله قولو ما شاء الله

بخاطري سؤال يا استاذ رغيد وارجو الاجابة عليه : هل شاهد حل مثله ام انه من نسج مخيلتك ؟؟ ارجو الاجابة بصراحه ؟

لكن الفرق بين طرح السؤال والاجابة سبع ساعات ؟ (( اتكلم عن نفسي لو اجتمع انا والانس والجن لما عملت مثل هذا الكود في ثلاث ساعات ))

والف شكر على سؤال الخ HMS ، وبعدين يا اخي ممكن تبشرنا اخبار المولود لاني دائماً افتكر الموضع ،، صحيح انه علاقاتنا تجمع بيننا قطع الكترونية وعدد من الكابلات لكن والله لك معزه مثل الاخ واكثر فأرجو ان لا تبخل علينا باخبارك والاطمئنان عن المولود \ المولوده :)

حيرتنا .

سلام عليكم

" اللهم لاسهل إلا ماجعلته سهلاً وأنت تجعل الحزن إذا شئت سهلاً "

003.gif

قواعد طرح الأسئله والمشاركات

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

MSN Messenger : nontop@gmail.com

Happy coding

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

#190

غريبة..

أنا متأكد اني كتبت رد هنا بالأمس.. لكني لا أجده الان..

ربنا يستر و لا اكون وضعته في موضوع ثاني..

ملخص الموضوع:

خوارزمية رغيد 100% رائعة و لم استطع منع نفسي من التفكير فيها بالامس قبل النوم (حسبي الله و نعم الوكيل .. :mad: نسهر الليالي نحلم بحلول رغيد)

المهم, اعتقد ان التحسين الوحيد الذي قد اضيفه (و هو تحسين بسييييييييييييط للغاية ) هو ان:

For Pos = 0 To Length - 1

تصبح:

For Pos = 0 To Length - 2

أما حل بنت اليمن فهو الأقرب لعقولنا .. نحن المبرمجين المتوسطين :D :D

و مرة تانية:: اتمنى ان تجيب على سؤال non top ..

تم تعديل هذه المشاركة بواسطة undo في 12 مارس 2005 في 02:03

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#191

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

السلام عليكم و رحمة الله وبركاته

الأخ العزيز NonTop لا حاجة لك عزيزي ان تذكرني بأن أجيب على تساؤلك بصراحة .. لأني لن اكذب عليك بإذن الله تعالى .. و يبدو ان الاجابة اخذت على محمل اكبر مما جاءت به ! ... فهي اولاً لم تستغرق سبع ساعات مطلقا بل بضع دقائق و بعد رؤية السؤال فنصف الزمن كان للفكرة و النصف الآخر لكتابة الرد ... و لا اتذكر اخي اني رأيت الحل مسبقا ... غير ان الذي اريدك ان تتاكد منه انه حل بسيط للغاية لايستحق ان تلقي له بالاً عزيزي.

و اني ارى ان الحل الذي و ضعته اختنا افضل منه بكثير لبساطته و اداءه المتقن لمطلب الاخ هارون بينما انتهجت انا اسلوب مختلف لم يغني شيئا سوى اني كنت اتجنب العشوائية التي قد تدخلنا في دوران اكثر من اللازم و لهذا ملئت المصفوفة بارقام مبدئية قمت بسحبها بعد ذلك الى المواقع من الاول و بشكل تصاعدي يجعلها عشوائية و بأقل عدد ممكن من الدورات ... و هو نفسه الذي قامت الاخت الفاضلة بتجنبه عن طريق الدوران الداخلي الذي تضطر الى إستدعاءه في حال فشل الاستخراج العشوائي للارقام و بالتالي تبحث عن اقرب الفراغات الموجودة في المصفوفة و هو حل ذكي جداً يستحق الإشادة بحق ... هذا و لا اشك في انك و مشرفنا undo الذي عرف عنه تواضعه الشديد مع علمه الغزير ( بارك الله له و لنا فيه ) يمكن ان تتحفونا بحلول اكثر تألقاً بمجرد امعان النظر في المسئله بإذن الله تعالى.

و كما ذكر مشرفي العزيز Undo في ملاحظته الذهبية و على الرغم من الدالة التي وضعتها ستقوم بتأدية المطلوب بشكل جيد بإذن الله تعالى إلا انني كان من الاحرى بي ان اجعل الدوران ينتهي بـ Length - 2 توفيراً للدورة الاخيرة التي لن تقوم بشيء سوى اختيار نفس العنصر ( الاخير ) و إستبداله بنفسه.

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

السلام عليكم و رحمة الله وبركاته

مواضيع برمجية تقنية جديدة

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

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

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

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

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

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

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

مواضيع برمجية تقنية قديمة

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

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

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

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

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

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

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

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

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

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

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

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

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

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

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

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

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

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

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

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

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

#192

بصراحة، حلين من أروع ما رأيت في حياتي... وأختلف مع أخي Undo في وصفه لكود بنت اليمن، فلا يعني كون الكود معقداً بأنه جيد، بل الجمال والقوة في البساطة و "قربه" من العقول... نرجو من أختنا بنت اليمن بأن تفحص كودها وتقارنه بكود الأستاذ رغيد من حيث السرعة (يجب أن تحولي الكود الى Function حتى تكون المقارنة عادلة)...

لقد كتبت كوداً منذ زمن لحل هذه المسألة (إستغرقني في ذاك الحين يومين :lol: )، ومع ذلك أخجل من وضعه هنا، كود يستطيع حتى Undo كتابته B) .

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

بالنسبة لتساؤلك، أشكرك أخي NonTop،وأدعو الله أن يرزقك وجميع الأخوة والأخوات هنا بالذرية الصالحة... نعم يا سيدي، لقد وهبني الله بطفلة أشغلتني في هذه الأيام وأظنها ستشغلني بحبها بقية العمر... وبالنسبة لصورة لها أعدك بأن أضع لها صورة قريباً في توقيعي... على فكره: سميتها (أو بالأحرى سماها والد زوجتي) بإسم Aiko...

ندعو أختنا بنت اليمن لطرح سؤال الأسبوع القادم (بعد إذن الأستاذ رغيد والأخوة المشرفين )...

Learn Japanese :>>> http://www.nouben.com/

#193

السلام عليكم ورحمة الله

أخي هارون

بورك في الموهوب وشكرت الواهب ، ورزقت برها وكفيت شرها

اللهم أنبت ابنة أخينا هارون نباتاً حسناً ، وارزقها رزقاً حسناً ، واجعلها قرة أعين لوالديها وللمسلمين

اللهم آمين

#194

السلام عليكم

اولاً الف مليون ترليون مبروك للاخ هارون على المولوده وإن شاء الله تتربى فى عزك وعلى طاعة الله ورسوله, واسف إنى تاخرت فى التهنئه ولكن انا لسى سامع الخبر.

ثانياً تعقيباً على السؤال الذى طرحه اخى هارون, ما رائيكم ان نقوم بعمل نفس البرنامج ولكن باستخدام random مره واحده فقط لا غير.

مجرد إقتراح واسف على التطفل عليكم فى قسم vb.net.

انا لدى فكره الحل ولكن لا استطيع تطبيقها بهذه اللغه.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#195
اقتباس
مجرد إقتراح واسف على التطفل عليكم فى قسم vb.net

فعلاً يا أحمد غريب، شو جايبك عندنا هون؟؟ :lol:

شكراً أخي محمد النحرواي وشكراً أحمد على تهانيكم الرقيقة....

ماذا تقصد بعمل random مرة واحدة؟؟؟ أرجوك أخي أحمد أن تشرح لنا الفكرة...

Learn Japanese :>>> http://www.nouben.com/

#196

السلام عليكم

الفكره بسيطه إن شاء الله ولكن تنفيذا قد يسبب مشكله إن لم تقم بها على الوجه الصحيح, كما تلاحظ فإن الاخ رغيد والاخت بنت اليمن إستخدمو الداله Rand.Next عدة مرات, المطلوب هو إستخدام هذه الداله مره واحده فقط.

دعنى اوضح اكثر, فى الريضيات نعلم ان هنا عدة طرق لترتيب مصفوفه, وإذا كان الترتيب عشوائي كما هو الحال هنا فيكون عدد المجموعات n! على سبيل المثال إذا كان لديك ثلاثة ارقام يمكنك ان ترتبها ب 6 طرق عشوائيه,

على نفس المنوال يمكننا ترتيب ال 20 رقم ب 20! طريقه, ما عليك القيام به هو إيجاد رقم عشوائى ومن ثم ترتيب الارقام بما يتناسب معى الرقم الذى حصلت عليه.

ارجو ان تكون الفكره واضحه.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#197

السلام عليكم ورحمه الله وبركاته

اخي رغيد الطيب ، ما شاء الله تبارك الله ...

ومن ترك الكِبر ولزم التواضع كمل سؤدده وعلا قدره وتناهى فضله، قال فيما رواه مسلم في الصحيح: " ومن تواضع لله رفعه "

HMS اسف ان اقولك لك حل الاستاذ رغيد الطيب لا يمكن ان يفكر فيه عقل انسان طبيعي ،

ومن ترك المراء وإن كان مُحقاً ضُمن له بيت في ربض الجنة وسلم من شر اللجاج والخصومة وحافظ على صفاء قلبه وأمن من كشف عيوبه.

بالنسبة لحل الاخت بنت اليمن حل جميلا جدا ومفهوم وقريب للعقل ، ولم اقل فيه شيء أو اقلل من قدره .

" اللهم لاسهل إلا ماجعلته سهلاً وأنت تجعل الحزن إذا شئت سهلاً "

" اللهم لاسهل إلا ماجعلته سهلاً وأنت تجعل الحزن إذا شئت سهلاً "

003.gif

قواعد طرح الأسئله والمشاركات

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

MSN Messenger : nontop@gmail.com

Happy coding

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

#198
اقتباس
كود يستطيع حتى Undo كتابته

حلوووووووة :D :D

كان قصدك طبعاً

اقتباس
كود يستطيع undo كتابته لحظياً

لكنك نسيت و اضفت "حتى" و نسيت "لحظياً"

الأهم ::::::

الف مبروووووووووووك على ايكو (يعني ايه؟؟)

و عقبال ما تجيب 10 او 20 تانيين يخلوك تبطل تزونا اساساً :D :D

و في انتظار سؤال الأسبوع القادم

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#199

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

السلام عليكم و رحمة الله وبركاته

اولا ابارك للحبيب هارون الإبنة الاولى و اسأل الله تعالى ان يبارك لك فيها و يبارك لها فيك و ينفع بكما المسلمين يا أبا ( Aiko ) .

و بالنسبة لكود الاخت بنت اليمن و هو الفائز بالتاكيد ... بالاضافة الى اني سبق ان اشرت الى كوني لست داخلا في تقييم الفائزين بإذن الله تعالى ... و لان العملية التي يقوم بها بطيئة قليلا و ذلك بسبب الاعتماد على الدوران الداخلي في اختيار الموقع التالي .. وهو ما نستخدمه في حالة فشل اختيار Index عشوائي خالي، و لكن هذه الطريقة تكون مكلفة جداً من ناحية انه سيكون دوران داخل دروان ،، و إذا امعنا النظر وجدنا ان الدوران الداخلي يبدأ دائما من الصفر و هذا مكلف جدا في الدورات الأخيرة و يمكن التحايل عليه بجعل الدوران الداخلي يبدأ من عند آخر نقطة خالية وجدناها في المرة السابقة و هذا ادى الى تسريع الدالة بمقدار تجاوز العشر مرات عند توليد مليون رقم عشوائي ... بحيث تصبح الدالة كالتالي :

        Dim Rnd As New Random
        Dim index, counter, index2 As Integer
        Dim a(Length - 1) As Integer
        Dim Start As Integer

        For counter = 1 To Length
            index = Rnd.Next(0, Length - 1)
            If (a(index) = 0) Then
                a(index) = counter
            Else
                For index2 = Start To a.Length - 1
                    If (a(index2) = 0) Then
                        a(index2) = counter
                        Start = index2
                        Exit For
                    End If
                Next
            End If
        Next

و التعديل الطفيف كان في اضافة المتغير Start لحفظ نقطة الإنطلاق في كل مرة بإذن الله تعالى ... و هو تحسين لا يلغي كون الحل الذي وضعته الأخت رائع جداً كما بين اخونا العزيز هارون.

اما انت اخي العزيز NonTop تصفني بما ليس بي عزيزي فلا يتواضع إلا اصحاب العلم امثالكم و الحاظرين هنا ، و لنا فيكم بعد رسولنا الكريم اسوة حسنة بإذن الله ،،، و جزاك الله عن أخيك كل الخير عزيزي.

و بالنسبة لسؤال المتطفل علينا و الذي يحبه الجميع و نتمنى أن لا ينتهي تطفله علينا ابدا ... الغالي أحمد غريب ... و سؤاله الرائع بوجوب إستخدام الأمر Rand.Next مرة واحدة فقط ...

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

    Function OnceRandom(ByVal Length As Integer) As Integer()
        Dim Arr(Length - 1) As Integer
        Dim I, J, Index, Start As Integer

        Index = New Random(Environment.TickCount).Next(Length)
        Arr(Index) = 1

        For I = 1 To Length - 1
            Index = (Index * I + 1) Mod Length
            If Arr(Index) Then
                For J = Start To Length - 1
                    If Arr(J) = 0 Then
                        Index = J
                        Start = J
                        Arr(J) = I + 1
                        Exit For
                    End If
                Next
            Else
                Arr(Index) = I + 1
            End If
        Next

        Return Arr
    End Function

و فق الله الجميع لما يحب و يرضى ... ومبارك من القلب مرة اخرى لعزيزي هارون.

السلام عليكم و رحمة الله و بركاته

مواضيع برمجية تقنية جديدة

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

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

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

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

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

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

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

مواضيع برمجية تقنية قديمة

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

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

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

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

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

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

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

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

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

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

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

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

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

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

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

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

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

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

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

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

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

#200
اقتباس
الف مبروووووووووووك على ايكو (يعني ايه؟؟)

لاحظوا أخوتي بأن Undo كان مشرفاً ولذلك فالإجابة على سؤاله واجب مقدس.. وخاصة عندما يسأل عن الحبيبة Aiko..

اللغة اليابانية (وكذلك الصينية) هي لغة تصويرية تشابه اللغة الهيروغلوفية المصرية، أي أن أن السكريبت يحمل معنىً في رسمة... وهذه يختلف عن اللغات الهجائية التي يكون لحروفها أصواتا فقط وليس معنى... على كل حال..

Ai في اللغة اليابانية تكتب 愛... وتعني "حب"...

Ko وتكتب 子 ، تعنى "طفل"، وعادة ما يضاف هذا المقطع الى إسماء الإناث في اللغة اليابانية.

والمعنى العام هو "طفلة حبيبة"، فاليابانيون لهم نظرة خاصة نحو الأطفال ويعتبرون قدوم الأنثى مجلبة للحب بين أفراد الأسرة....

ومن مشاهير اليابان الذين يحملون نفس الإسم هو الأميرة Aiko وهي إبنة وليد عهد اليابان الحالي وستكون (بإذن الله) أول إمبراطورة يابانية في التاريخ بعد وفاة والدها (عمرها الآن 3 سنوات)...

شكراً أخي رغيد على تهنئتك الرقيقة لي... وأسألك بالمقابل (وأنا أعلم بأن قد تزوجت بالسنة الماضية بالرغم من محاولاتك إخفاء ذلك :lol: ).. هل من أطفال قريباً؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

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

Learn Japanese :>>> http://www.nouben.com/

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

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