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

لغز: كيف يمكن معرفة العدد الفردي من العدد الزوجي ؟

بدأه رغيد الطيب في 7 يناير 2010 · 7 رد · 14,755 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بعد قراءة المقال الخفيف

/index.php?showtopic=135717&st=0&p=689381&fromsearch=1entry689381

والاطلاع على حلول اللغز الذي طرحناه فيه .... سألني كثيرون وعلى الرغم من اننا اجبنا على اللغز باربعة حلول مختلفة ؟!

إلا انني سُئلت كثيرا هل يوجد حلول اخرى ؟! ... لمعرفة ما اذا كان الرقم المدخل هو عدد فردي ام عدد زوجي ؟!

ولأن السؤال طريف و الاجابة بالتأكيد يوجد حلول ... ولكن هل يستطيع الاخوة هنا ان يقترحوا حلول اخرى ؟!

السلام عليكم

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

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

• إستغلال خدمة الـ 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)

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

#2

معرفة نوع الرقم اذا كان فردي ولا زوجي وهنستخدم في فكرة جديدة اسمها TextChanged

هنبدأ المشروع كالتالي:

1- هنفتح مشروع جديد وفورم جديد

2- نضيف 2 ليبل وتكست بوكس

Label1 و Label2 و TextBox1

3- هنفضي محتويات Label2 وTextBox1 من خاصية Textفي الخصائص

4- هنكتب في Label1 اي رسالة للمستخدم مثلا Enter The Number You Want To Chack

5- نرتب الفورم بتاعتنا بالترتيب دة Label1 فوق وتحيتيه TextBox1وتحتيه Label2 او اي ترتيب تاني زي ما تحب

وكدة نبقا خلصنا مرحلة التصميم ونبدأ في مرحلة البرمجة

1-نروح لمنطقة الكود

2-هنا هنستخدم خاصية TextChanged لل TextBox1بالشكل دة

TextBox1_TextChanged

3-نكتب فكرة البرنامج الي هيا التفريق بين الرقم الزوجي والفردي

وطبعا الرقم الزوجي هو الي بيقبل القسمة علي 2 يبقا الكود هيكون بالشكل دة

Val(TextBox1.Text) Mod 2 = 0

بس طبعا هنحط شرط بالشكل دة

If Val(TextBox1.Text) Mod 2 = 0 Then

Me.Label2.Text = "The Number Is Even "

وهيكون المثال كله بالشكل دة

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

If Val(TextBox1.Text) Mod 2 = 0 Then

Me.Label2.Text = "The Number Is Even "

Else

Me.Label2.Text = "The Number Is Odd"

End If

End Sub

تحياتى

#3

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

اخونا الفاضل mero5000

حضرتك استخدمت فكرة الامر mod , الاخ رغيد طلب طريقة جديدة للتفريق بين العدد الفردى والعدد الزوجى.

=======

عامة فى لغات البرمجه التى لا تحتوى على الأمر mod فإننى استخدم الطريقة التالية للتفريق بين العدد الزوجى والعدد الفردى. بفرض العدد المراد اختباره هو N عندها يمكننا عمل الكود التالى (لم التزم بلغة برمجه محدده)

If Integral(N/2)=N/2 Then
Print "العدد زوجى"
else
Print "العدد فردى"
End If

وطبعا الامر mimetex.cgi?\text{Integral}(x) سيعود لنا بالقيمة الصحيحة للعدد mimetex.cgi?x. فإذا كان العدد N زوجيا فسيكون خرج قسمته على 2 هو عدد صحيح وسيكون عندها 2 ، اما لو كان العدد N فرديا فسيكون خارج القسمة على 2 هو عدد حقيقى ، وأكيد القيمة الصحيحة له ستختلف عن خارج القسمة الأصلى , اى سيكون 2.

هذا والله اعلى واعلم ,,,

أشهد أن لا إله إلا الله وأشهد أن محمدا رسول الله

bnr025.gif

مـــوقـــعـــى

#4

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

كما اشار الاخ عماد فان مثالك عزيزي mero5000 يستخدم الـ Mod وقد تم مناقشته في الرابط المذكور اعلاه ... اشكرك كثيرا على المشاركه

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

فهل ياترى هناك حلول مبتكرة اخرى !!!!

تم تعديل هذه المشاركة بواسطة رغيد الطيب في 7 يناير 2010 في 08:58

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

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

• إستغلال خدمة الـ 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)

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

#5

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

ننظر في أول رقم من اليمين ونحدد انه العدد فردي أو زوجي / وهذه محاولتي

Dim ss As Integer = Val(Microsoft.VisualBasic.Right(TextBox1.Text, 1))

If ss <> 0 And ss <> 2 And ss <> 4 And ss <> 6 And ss <> 8 Then
 MsgBox "العدد فردي" 
Else
 MsgBox "العدد زوجي"
end if

تم تعديل هذه المشاركة بواسطة محمدvb في 7 يناير 2010 في 08:40

#6

اجابة سليمة محمد

شكرا

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

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

• إستغلال خدمة الـ 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)

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

#7

يوجد حل اخر أتى بذهنى عند قراءة الموضوع و هو حل ثنائى، بإختصار دائما الـ Low Order Bit يكون بصفر للأرقام الزوجيه و واحد للأرقام الفرديه لذا سأستخدم المعامل Left Shift بدلا من استخدامى لـ And كالتالى

Private Function IsEven(ByVal value As Integer) As Boolean
    Return (value << 31) = 0
End Function

الداله تعود بـ True إذا كان الرقم المدخل زوجى و False إذا كان الرقم المدخل فردى و حيث انى استخدم الـ shift فلا يهم نوع الرقم موجب او سالب لإن إلإشاره ستهمل.

و حيث ان هذه'هلطريقه تنفع إلا انها بطيئه حيث ان الـ shift تؤثر على 32 بت جميعهم، لذا و حيث اننا نريد معرفة حالة البت الأول فقط سأستخدم and و بالتالى الداله السابقه سيتم اعادة كتابتها لتصبح كالتالى

Private Function IsEven2(ByVal value As Integer) As Boolean
    Return (value And 1) = 0
End Function

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

ملحوظه: لم اكون رأيت الموضوع الأصلى عند كتابة هذه الدوال و بالتالى تصبح اخر داله لا قيمة لها لإنها ذكرت من قبل فى الموضوع الأصلى

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

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 7 يناير 2010 في 14:57

مدونتي: C++ Tips and Tricks

#8

بسم الله السميع العليم

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

لكي تعم الفائدة سأضع الحلول البرمجية التي كانت في ذهني عند وضع السؤال (مع العلم بان بعض الشباب هنا قد ذكرها ) ... واسجل هنا اعجابي بفكرة الاخ محمد بالتدوير الرقم 31 مرة كوني لم افكر بهذا مسبقا.

على العموم يمكنك ان تفكر في الكثير من الحلول البرمجية لحل هذه المسئلة ... فمثلا

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

حلول ثنائية :

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

يمكن حقيقة الوصول الى اكثر من طريقة وحل اذا فكرنا بالمسئلة من وجهة نظر ثنائية Binary يعني صفر و واحد ... والمعاملات المستخدمة هنا كثيرة مثلا فقد استخدمنا المعامل And في الحل :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N And 1) = 0 Then
            MsgBox("عدد زوجي")
        Else
            MsgBox("عدد فردي")
        End If

وفي نفس الوقت يمكن استخدام المعامل ORبدلا من AND بطريقة اخرى فنحن نعرف ان المقارنة بإستخدام الـ OR تعيد القيمة 1 في حالة كون احد اطراف المقارنة يساوي 1 ويمكن بالتالي استغلال الامر ... بحيث نقارن العدد المدخل مع الواحد وفي حال كون العدد فردي فإن الناتج سيكون مساوي للعدد المدخل (لماذا ؟ ..... لأن البت الاول من العدد الفردي هو 1 وبالتالي مقارنته مع الواحد سيكون 1 وبهذا لن يتغيير الرقم الفردي) .... كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N Or 1) = N Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

اما في حالة العدد الزوجي فأن البت الاول هو صفر ومقارنته مع الواحد ستولد عدد جديد يزيد عن العدد الاصلي بواحد نتيجة لتحول البت الاول في العدد الزوجي بعد المقارنة الى 1 ... بكلام آخر :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N Or 1) = (N + 1) Then
            MsgBox("عدد زوجي")
        Else
            MsgBox("عدد فردي")
        End If

لاحظ ان الكودين السابقين عبارة عن طريقة واحدة وهي استخدام الـ OR للمقارنة مع الواحد ارفقته مرتين لتوضيح الفكرة فقط

حل آخر يمكن التفكير فيه وهو المعامل XOR ... وهو من اجمل المعاملات وله خواص محببة تجعله صديق للمهتمين بتشفير البيانات والمهم لنا هنا انه يعيد القيمة 1 في حال اختلاف الاعداد المقارنة وصفر في حال تساويها فمقارنة الواحد بالصفر او الصفر بالواحد عن طريق الـ XOR تعيد القيمة واحد .... بينما مقارنة الواحد بالواحد و الصفر بالصفر فتعيد القيمة صفر .... من هذه المعلومات البسيطة اظنك قد فطنت الى الحل البسيط الذي سنستخلصه هنا ..... اذا فكرت ستجد ان مقارنة اي عدد بالواحد عن طريق الـ XOR ستجعل الناتج يكون اقل من العدد الفردي المدخل وفي حال كون العدد المدخل هو عدد زوجي فان الناتج سيكون اكبر بواحد (لأن الصفر الاولى ستصبح 1) والعكس للعدد الفردي فان البت الاولى ستصبح صفرا ... نستنتج من ذلك با اختصار :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N Xor 1) < N Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

لا اعرف اذا كان ينبغي الاكتفاء بهذه الحلول الثنائية ام نضيف لها ... ودعنا ناخذ حل واحد اضافي ... هو باستخدام التدوير ... فتدوير الارقام يكون اما الى الشمال عن طريق >> او الى اليمين عن طريق << ... وبالتالي ستجد اننا اذا دورنا الرقم الزوجي مرة واحدة الى اليمين فانه سوف يفقد البت الاولى من اليمين فاذا عدنا ودورناه مره اخرى ولكن الى الشمال فاننا سنستعيد الصفر الضائع مرة اخرى وسيبقى الرقم الزوجي كما هو .... غير ان تدوير الرقم الفردي الى اليمين مرة ثم الى الشمال مباشرة سيجعله يفقد البت الاول ويتحول من 1 الى صفر .... وهذه خاصية يمكن استغلالها كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N >> 1 << 1 < N)Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

قد يبدو الشرط :

N>>1<<1<N

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

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N >> 1 << 1) = N Then
            MsgBox("عدد زوجي")
        Else
            MsgBox("عدد فردي")
        End If

ما اريد قوله هنا انه يمكننا استنتاج الكثير من الحلول البرمجية ثنائيا و سنكتفي بهذه الحلول كامثلة.

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

الحلول الرياضية :

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

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

لنتجاهل هلوستي السابقة ونرى الحل فهو كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If Int(N / 2) * 2 < N Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

حل آخر .... اذا اللقيت نظرة على المقالة الاصلية فستجد ان احد الحلول كان بمقارنة القسمة بباقي مع القسمة بدون باقي و القسمة بدون باقي يمكن بسهولة تمثيلها بدون استخدام المعامل العكسي \ وانما باستخدام القسمة العادية مع حذف الجزء العشري بإستخدام الدالة Int كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If Int(N / 2)  <> N / 2 Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

اذا كنت تتفق معي فان اكثر الحلول روعة هي اكثرها بساطة .. وهنا يكمن جمال الرياضيات .... فكر معي بالارقام السالبة؟

الرقم السالب اذا ضرب في نفسه عدد مرات فردية فان الناتج سالب واذا ضرب في نفسة عدد مرات زوجية فان الناتج موجب ... خذ مثلا الرقم سالب واحد (للتبسيط) اذا ضربناه في نفسه مرتين (زوجي):

-1 * -1 = 1    ' موجب

بينما اذا ضربناه ثلاث مرات - اي عدد فردي- فان الناتج سالب :

-1 * -1 * -1 = -1

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

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")
        Dim R As Integer = -1

        For I As Integer = 1 To N - 1
            R *= -1
        Next

        If R = -1 Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

اذا كنت تتفق معي فالكود السابق هو كود عبيط للتوضيح فقط والحل الحقيقي هو باستخدام الدالة Pow لرفع العدد سالب واحد الى الاس N (وبالتالي ضربه في نفسه)

بكلام آخر يمكنك استخدام علامة الرفع الى الأس في الفيجوال بيسك وهي ^ كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If ((-1) ^ N) = -1 Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

وكما هو الحال في الحلول الثنائية يمكن ان نشتق الكثير من الحلول المماثلة .. ونكتفي بهذا هنا .

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

حلول نصية Strings :

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

اقصد بالحلول النصية هي الحلول التي تعتمد على النصوص Strings في حل المسئلة بحيث تقوم بالتحويل الى نص ثم من خلاله وبطريقة معينة نستنتج كون العدد فرديا ام زوجيا .

خذ مثلا ... ان قسمة اي عدد على اثنين ينتج عنه اما عدد صحيح مثل 4 (ينتج 2) و12 ينتج 6 وهكذا ... بينما قسمة الاعداد الفردية ينتج عنه رقم صحيح بالاضافة الى الكسر (نُص) او (نقطة متبوعة بخمسة ) .... كالتالي 3 ينتج عنه 1.5 و 7 ينتج عنه 3.5 و 131 ينتج عنه 65.5 وهكذا .... فإذا حولنا الناتج من القسمة الى نص ثم قمنا فحص كونه ينتهي بـ "5." عن طريق EndsWith فسوف نصل الى كون العدد فردي .... كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If (N / 2).ToString.EndsWith(".5") Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

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

    Function ToBinary(ByVal Num As Integer) As String
        Dim Bin As New System.Text.StringBuilder

        While Num > 0
            Bin.Append(Num Mod 2).ToString()
            Num \= 2
        End While

        Return StrReverse(Bin.ToString())
    End Function

فالدالة ToBinary ستقوم بتحويل الرقم الذي تدخلها الى نص يمثل مقابله بنظام العد الثنائي .. مثلا 5 سوف يصبح "101" و 22 سوف يصبح "10110" ........... واذا لاحظت فان الخمسة هو فردي لهذا انتهى بواحد و الـ 22 هو رقم زوجي لهذا انتهى بصفر.... وعليه فالاجابة كالتالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If ToBinary(N).EndsWith("1") Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

هذا بالنسبة لتحويله الى نظام العد الثنائي وكذلك الحال اذا اردنا فحصه بالنظام العشري مباشرة سنجد انه مهم كان الرقم فلابد ان ينهي باحد هذه الارقام 1 أو 3 أو 5 أو 7 أو 9 .... فمثلا لو قلت لك هل الرقم 8646729464527 هو قرم فردي ؟ ... سيكون الناتج نعم لانه انتهى بسبعة بغض النظر عن بقية الارقام وطوله وعرضه ... و بالتالي ... نسنتنتج التالي :

        Dim N As Integer = InputBox("ادخل أي عدد صحيح:")

        If "13579".IndexOf(N.ToString.Last) > -1 Then
            MsgBox("عدد فردي")
        Else
            MsgBox("عدد زوجي")
        End If

ومن هذا يمكن استنتاج الكثير من الحلول لجميع انظمة العد ...

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

ملاحظة كثير من الاجابات قد طرحها الشباب ولكن هذه كانت الاجابة قبل طرح السؤال وهي للفائدة

تحياتي

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

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

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

• إستغلال خدمة الـ 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)

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

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