لمبرمجي القسم- برنامج بسيط و لغز ابسط ؟

الكاتب : رغيد الطيب   المشاهدات : 5,549   الردود : 71    ‏2003-12-05
      مشاركة رقم : 1    ‏2003-12-05
  1. رغيد الطيب

    رغيد الطيب عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    58
    الإعجاب :
    0
    السلام عليكم ورحمة الله وبركاته ...

    لمحبي البرمجة جميعاً .. اهديكم هذا البرنامج البسيط الذي يحتوي على برنامج بسيط جداً جداً جداً ...

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

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

    بالنسبة لي فقد كتبته بلغتي الحبيبة الفيجوال بيسك ... و للجميع حرية الاختيار بالنسبة للغة وإن كنت احبذ لغة الفيجوال بيسك لكي تسهل المقارنة ....

    طبعاً اتمنى ان لا يؤخذ الموضوع على انه سيكون هناك فائز وخاسرون ... لا .... لا ... دعونا فقط نستفيد من الافكار التي سيطرها الاخوة في برامجهم ....

    طبعاً من مشاركاتي البسيطة في القسم يمكنني ان ادعو مبرمجي القسم الذين اعرفهم .. وهو :

    المحقق كونان .... والكوماندر ... و يافع .. واميرنا الصنعاني .... وعلاء عصام ... والاخت Nora ... وجميع من يحب المشاركة ....

    وضعت البرنامج هنا بدون كود حتى يتنافس المحبون في وضع كود للبرنامج ... وعندما ينقضي الامر اضع الكود بإذن الله ...


    والسلام عليكم ورحمة الله وبركاته...
     
  2.   مشاركة رقم : 2    ‏2003-12-05
  3. الامير الصنعاني

    الامير الصنعاني مشرف سابق

    التسجيل :
    ‏2002-05-04
    المشاركات:
    9,034
    الإعجاب :
    298
    السلام عليكم ورحمة الله
    انا حالياً
    مش بغرفتي ومش على جهازي
    وبستخدم احد الاجهزة من احدى مكتبات الجامعة

    والبرنامج ما ظهر بالكلام العربي

    المهم ان شفت الصور واخترت
    ويبدوا انني لم افهم كلامك
    يا ريت توضح لنا اكثر

    ان شاء الله لي عودة
    بعد ان اخذ الامتحان اللي هو بعد قليل

    تحياتي لك
    والسلام ختام
     
  4.   مشاركة رقم : 3    ‏2003-12-05
  5. Nora

    Nora عضو

    التسجيل :
    ‏2003-09-04
    المشاركات:
    59
    الإعجاب :
    0
    جزاك الله خيرا أخي الفاضل ...( أعتقد أن كلمة مبرمجة كبيرة علي فأنا لازلت في البداية) لكن على الرغم من ذلك فسأشارك...

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

    كود:
    Option Explicit
    Dim FinalNumber As Integer
    
    Private Sub Form_Load()
    FinalNumber = 0
    Check1.Tag = 4
    Check2.Tag = 1
    Check3.Tag = 8
    Check4.Tag = 2
    End Sub
    
    Private Sub Command1_Click()
    FinalNumber = Check1.Tag * CInt(Check1.Value) + Check2.Tag * CInt(Check2.Value) + Check3.Tag * CInt(Check3.Value) + Check4.Tag * CInt(Check4.Value)
    FalseValue
    MsgBox FinalNumber, , "   الرقم الذي أخترته هو "
    FinalNumber = 0
    End Sub
    
    Public Sub FalseValue()
    Check1.Value = False
    Check2.Value = False
    Check3.Value = False
    Check4.Value = False
    End Sub
     
  6.   مشاركة رقم : 4    ‏2003-12-05
  7. رغيد الطيب

    رغيد الطيب عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    58
    الإعجاب :
    0
    اولا السلام عليكم ورحمة الله وبركاته ...

    وثانياً : اتمنى ان يوفقك الله اخي في امتحانك القادم بإذن الله تعالى ... وان ييسره عليك بإذنه تعالى ...

    و بالنسبة للبرنامج هذا توضيح اكثر ...

    عندما تفتح البرنامج تجد اربع صور كل واحدة تحتوي على مجموعة من الارقام اي انها صور لارقام وهذة الارقام هي في الحدود من 1 الى 15 .... وكل صورة من الصور يوجد عليها مربع اختيار ... ماشي الحال ! ...

    والان اختر في قلبك رقم معين ضمن هذة الحدود( 1 - 15 ) ثم انظر الى الصور الاربع وحدد كل الصور تحتوي على الرقم الذي اخترته في قلبك ...

    بعد ان اخترت الصور التي تحتوي على رقمك ... يمكنك ان تضغط على الزر الذي في الاسفل سوف ترى ان البرنامج قد عرف الرقم الذي اخترته في قلبك ؟ ....

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

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

    ------

    والسلام عليكم ورحمة الله وبركاته ....
     
  8.   مشاركة رقم : 5    ‏2003-12-05
  9. 3laa3sam

    3laa3sam عضو فعّال

    التسجيل :
    ‏2003-06-21
    المشاركات:
    619
    الإعجاب :
    0
    والله فكره طلعه منك ياأستاذ رغيد...

    والله فكره أهي طلعت منك ياأستاذ رغيد ، عموماُ انا هحمل عندي الويب ده وهشوف بس الظاهر إن إختونا (Nora) ماشيه ومهتمه ع الاخر ، أنا راجع بس لما أفضي إلي عندي وشكراً.
     
  10.   مشاركة رقم : 6    ‏2003-12-05
  11. رغيد الطيب

    رغيد الطيب عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    58
    الإعجاب :
    0
    السلام عليكم ورحمة الله وبركاته ...

    الان انتبهت لمشاركتك ... اختي ...

    وسوف اراها ولي عودة بإذن الله تعالى وفي انتظار باقي الاخوة ...

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


    اكرر شكري لتفاعلك ....

    والسلام عليكم ورحمةالله وبركاته ....
     
  12.   مشاركة رقم : 7    ‏2003-12-06
  13. يافع

    يافع عضو متميّز

    التسجيل :
    ‏2003-03-29
    المشاركات:
    1,765
    الإعجاب :
    0
    :) لم أعرف الحل بعد .... لكن هل هذ الفلاش لزكية الذكية يعرض نفس الفكرة!!!
    [flash=http://www.emi.co.ae/print/Majed/games/age.swf]WIDTH=400 HEIGHT=350[/flash]
     
  14.   مشاركة رقم : 8    ‏2003-12-07
  15. azizNY

    azizNY عضو

    التسجيل :
    ‏2003-12-07
    المشاركات:
    218
    الإعجاب :
    0
    Salam Alikom

    Ok, this is a sample of the code, I just dont have more time to finish it, but you will get the idea of how the program works, I only did the coding for 3 numbers, the other numbers can also be the same..


    Dim check As Boolean
    Dim check2 As Boolean
    Dim check3 As Boolean
    Dim check4 As Boolean
    check=false
    check2=false
    check3=false
    check4=false

    if checkbox1=true then
    check =true
    end if


    if checkbox2=true then
    check2 =true
    end if

    if checkbox3=true then
    check3 =true
    end if

    if checkbox4=true then
    check4 =true
    end if

    If check = True And check2 = False And check3 = False And check4 = False Then
    MsgBox "4"
    End If

    If check = True And check2 = False And check3 = False And check4 = True Then
    MsgBox "6"
    End If

    If check = True And check2 = True And check3 = True And check4 = True Then
    MsgBox "15"
    End If

    BTW i did it the long way, it could be done easier with a case statement or a loop...

    salam,
     
  16.   مشاركة رقم : 9    ‏2003-12-07
  17. رغيد الطيب

    رغيد الطيب عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    58
    الإعجاب :
    0
    اولاً السلام عليكم ورحمة الله وبركاته ...

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

    ولكنكم ما قصرتم والله فمنكم من حاول ومنكم من عزم على المحاولة ومنكم من شارك وهي والله اشياء ترفع المنعويات وتحث على المواصلة ...

    فشكراً للامير الصنعاني والاخت نورا و علاء ويافع وعزيز ... وكل الشكر والامتنان للباقون ...

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

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

    لهذا فهي اجابة رائعة بالفعل .... والمهم قوله هنا هو انه يوجد العديد من الحلول التي يمكن ابتكارها للمسألة ... وقد كنت اعتزم تصعيب اجابة اللغز بحيث امنع استخدام اوامر الشرط كا الـ IF او SELECT CASE او ما شابه من الاوامر الشرطية غير اني سوف اكتفي بهذا القدر ...

    و ضعت هنا اجابة بسيطة خالية من اوامر الشرط و وتعتمد على مصفوفة الادوات او الـ Control Array وهي ان تجعل اكثر من عنصر في الفورم بنفس الاسم ويختلفون في الخاصية Index اي ان جميع مربعات الاختيار او الـ CheckBox تحمل نفس الاسم ولكل منها Index مختلف من الـ 0 وحتى الـ 3 ... واعتماد مبدأ النظام الثنائي في الحل ... وبهذا يمكن حل البرنامج كاملا بهذا الشكل :
    [align=left]
    كود:
    Private Sub Command1_Click()
        Dim I As Integer, V As Integer
        
        For I = 0 To 3
            V = V + (2 ^ I) * Chk(I).Value
            Chk(I).Value = 0
        Next
        MsgBox V, vbInformation, "الرقم المطلوب هو"
    End Sub
    
    واتمنى للجميع حظاً موفقاً في مواضيع واللغاز برمجية اخرى ...

    في الملف المرفق كود البرنامج كاملاً ..

    والسلام عليكم ورحمة الله وبركاته ....
     
  18.   مشاركة رقم : 10    ‏2003-12-07
  19. رغيد الطيب

    رغيد الطيب عضو

    التسجيل :
    ‏2003-07-09
    المشاركات:
    58
    الإعجاب :
    0
    السلام عليكم ورحمة الله وبركاته ...

    الاخ العزيز يافع نسيت ان اشكرك على الفلاش الجميل الذي وضعته ... وفي الواقع ان فكرته مختلفه قليلاً ويمكن تأديتها بسهولة باستخدام النظام الثنائي Binary System في ايجاد جداول الارقام التي تعرض على الشاشة ..

    وفي الملف المرفق كتبت برنامج على عجل للقيام بنفس الوظيفة باذن الله تعالى تجده مع الكود في المرفقات ....

    ولك تحياتي اخي ..

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

مشاركة هذه الصفحة