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

كيف يكتب هذا الكود (عدد مرات التكرار متغير غير ثابت)

بدأه اسلام الكبابى في 9 مايو 2013 · 6 رد · 747 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله تعالى وبركاته
أود أن اعرف كيف يكتب الكود الصحيح للقيام بعملية التكرار هذه
علمآ بأن عدد مرات التكرار متغير غير ثابت

 

Private Sub Command1_Click()
    N = InputBox("  ", "أدخل قيمة N")
     For I1 = 1 To 20
For I2 = I1 + 1 To 20
For I3 = I2 + 1 To 20
For I4 = I3 + 1 To 20
Rem " وهكذا وهكذا .........حتى نصل لقيمةN  "
Rem "   فاذا كانت N=9 مثلا"

 فان آخر جملة تكون
For I9 = I8 + 1 To 20



Rem "هنا توجد مجموعة الجمل المحتوية على كل من ........,I1,I2,I3"


Next I4
Next I3
Next I2
Next I1

End Sub

وأوضح مرة أخرى أن الكود الذى أريده يحتوى على عدة متغيرات عددها=In,......,I3,I2,I1) N)

 

جزاكم الله خيرا ولكم الف شكر 

#2

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

تفضل أخي إسلام..

Private Sub Command1_Click()
    Dim X As Integer
    Dim N As Integer
    X = 1 'أول قيمة للحلقات التكرارية
    N = Val(InputBox("  ", "أدخل قيمة N"))
    Dim I(100) As Integer 'يمكنك زيادة العدد 100 ليعبر عن أقصى قيمة ممكنة للمتغير N
    
    Do Until X > N
    
        For I(X) = 1 To 20
            'استبدل السطر التالي بالحدث الذي تريد تنفيذه في كل حلقة تكرارية
            Print I(X)
        Next I(X)
        
        X = X + 1
    Loop
End Sub

 

هذا بافتراض أنك تريد تنفيذ نفس الحدث في كل حلقة تكرارية من الحلقات التي عددها N

أما إذا كنت تريد تنفيذ حدث مختلف لكل حلقة تكرارية؛ فيمكنك إضافة بعض التعديلات كالآتي:

 

Private Sub Command1_Click()
    Dim X As Integer
    Dim N As Integer
    X = 1 'أول قيمة للحلقات التكرارية
    N = Val(InputBox("  ", "أدخل قيمة N"))
    Dim I(100) As Integer 'يمكنك زيادة العدد 100 ليعبر عن أقصى قيمة ممكنة للمتغير N
    
    Do Until X > N
    
        For I(X) = 1 To 20
            'هنا سيتم تنفيذ حدث مختلف لكل حلقة تكرارية
            Select Case X
                Case 1: Print I(X)
                Case 2: Print I(X) * 10
                Case 3: Print I(X) * 100
                '
                '
                '
                '
            End Select
        Next I(X)
        
        X = X + 1
    Loop
End Sub

 

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

 

ربما لو أخبرتني عمّا تريد أن تفعل بالضبط؛ لاستطعت أن أفيدك أكثر، ولكن سأحاول أن أقترح عليك شيئاً يمكن أن يساعد في هذا الأمر..

 

في هذه الحالة يمكنك ربط الحدث بقيمة X والذي يعبر عن القيمة الحالية للمتغير N (أو بمعنى آخر هو رقم الحلقة التكرارية الحالي)، وذلك كالآتي:

 

فلنفترض أنك تريد تنفيذ حدثاً واحداً -كما في الكود الأول- والحدث هو أن تجعل عرض صندوق الصورة (Picture box) يتغير مع الحلقة التكرارية، هنا لا مشكلة ستستخدم الكود الأول، ولكنك ستستبدل جملة ((Print I(X) بـ((Picture1.Width = I(X)..

 

ولكننا إذا كنا نريد في الحلقة التكرارية الأولى تغيير قيمة Picture1.Width، وفي الحلقة الثانية تغيير قيمة Picture2.Width، ثم Picture3.Width، وهكذا؛ ففي هذه الحالة سنقوم بتعديل بسيط وهو عمل مصفوفة بحيث يكون هناك Index لعنصر صندوق الصورة (Picture box) فبدلاً من أن تكون الصورة الأولى Picture1، والثانية Picture2،..... نجعله كالآتي مثلاً:

Pic(1)Pic(2)Pic(3)

 

في هذه الحالة يمكننا ربط الحدث بقيمة X كما ذكرت، ويكون الكود بالبساطة الآتية wink.png:

Private Sub Command1_Click()
    Dim X As Integer
    Dim N As Integer
    X = 1 'أول قيمة للحلقات التكرارية
    N = Val(InputBox("  ", "أدخل قيمة N"))
    Dim I(100) As Integer 'يمكنك زيادة العدد 100 ليعبر عن أقصى قيمة ممكنة للمتغير N
    
    Do Until X > N
    
        For I(X) = 1 To 20
            'استبدل السطر التالي بالحدث الذي تريد تنفيذه في كل حلقة تكرارية
            Pic(X).Width = I(X) 'هنا سيتغير عرض صندوق النص الأول في الحلقة التكرارية الأولى والثاني في الحلقة الثانية وهكذا..
        Next I(X)
        
        X = X + 1
    Loop
End Sub

 

لعلي أكون وفّقت في إيضاح الأمر بالصورة المناسبة

 

وأنا هنا في الخدمة إن أردت الاستفسار عن شيء

 

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

#3

جراك الله خيرآ

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

فاذا كان لينا 6 أشياء نريد اختيار 3منهم فكلنايعلم ان عدد طرق اختيارهم 6ق3 =(1*2*3)/(4*5*6)=20

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

و
هذا مرفق به
مثال بسيط
يوضح للجميع الكود الذى أريده اذا كان لينا 8 أشياء نريد اختيار 3منهم مثلآ 8ق3

ومثال بسيط آخر يوضح للجميع الكود الذى أريده اذا كان لينا 8 أشياء نريد اختيار 4منهم مثلآ 8ق4


ولكنى أريد مثالآ عامآ لأى رقمين

#4
اقتباس

ولكنى أريد مثالآ عامآ لأى رقمين

 

أوضح معنى هذه الكلمة جيدآ  . ففى المثالين المرفقين

أحدهما هوكود يسرد لنا طرق الاختيار اذا كان لينا 8 أشياء نريد اختيار 4منهم مثلآ

والآخر هوكود يسرد لنا طرق الاختيار اذا كان لينا 8 أشياء نريد اختيار 3منهم مثلآ

ولكنى أريد مثالآ عامآ لأى رقمين غير معلومين

  لاأريد  8 ولا  4

ولاأريد  8 ولا  3

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

#5
اقتباس

ربما لو أخبرتني عمّا تريد أن تفعل بالضبط؛ لاستطعت أن أفيدك أكثر

أنا فى انتظار ردك بعد ما أخبرتك عمّا أريد أن أفعل بالضبط

#6

أوضح المشكلة عندى للجميع أكثر وأكثر
المشكلة عندى أنى لا استطيع ضبط عدد مرات تكرار اللوب(عدد مرات جمل الFOR وعدد مرات جمل الNEXT) أعرف فقط أن عددهم سيكون على قدر قيمةالمتغير N   :cry:

ولكن كيف أكتب الكود اللازم لذلك وأنا لاأعرف أصلآ كم ستكون قيمة هذا المتغير N  (فالمستخدم هو الذى سيعطى بنفسه قيمته)

ولكم ألف شكر

#7

طب أى حد يعرفنى

السؤال واضح وطلبى مفهوم ولكن حله صعب؟

أم أن السؤال غير مفهوم أصلا؟

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…