منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف يكتب هذا الكود 0عدد مرات التكرار متغير غير ثابت
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
إقتباس :ولكنى أريد مثالآ عامآ[size=3] لأى رقمين[/size]

ان مثالك لم يفعل أكثر مما فعل مثالى
[size=3][b][size=3]هوكود يس[size=3]رد لنا طرق الاختيار [/size]اذا كان لينا 8 أشياء نريد اختيار 4منهم مثلآ 8ق4[/size][/b][/size]

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


لاأريد [size=3]a = 8 ولا n = 4[/size] ولكن أريد المستخدم هو الذى يعطى بنفسه قيمة كل منهما
السلام عليكم

- ياأخي العزيز ، قيمة ال A وال N متغيره غيرها للأرقام التي تريد ، أو ضع inputbox وضع قيمتة في المتغير N و inputbox آخر للمتغير A . فكر قليلا .

- تحياتي .
إقتباس :- ياأخي العزيز ، قيمة ال A وال N متغيره غيرها للأرقام التي تريد ، أو ضع inputbox وضع قيمتة في المتغير N و inputbox آخر للمتغير A . فكر قليلا

- ياأخي العزيز ، غيرها أنت ان استطعت بأى طريقة تعرفها وارسل الكود كاملا . فكر قليلا
إقتباس :[h=1](عدد مرات التكرار متغير غير ثابت)[/h]

الأستاذ الكبير/ناجى ابراهيم قال فى رده (إذا ذكرت لنا ما الغرض من ذلك فربما نستطيع مساعدتك بشكل أسهل)
ولكنه لم برد علينا حتى الآن
كود :
Private Sub Command1_Click()

Dim iFrom() As Integer
Dim iTo() As Integer
Dim A1 As String
Dim N1 As String
Dim A As Integer
Dim N As Integer
Dim I, Z As Integer

A1 = InputBox("أدخل عدد الأشياء", "الكبابي", "")
N1 = InputBox("أدخل عدد العوامل", "الكبابي", "")

If IsNumeric(Trim$(A1)) = False Then
   MsgBox "يجب أن يكون عدد الأشياء رقماً", vbOKOnly + vbExclamation, "الكبابي"
   Exit Sub
End If

If IsNumeric(Trim$(N1)) = False Then
   MsgBox "يجب أن يكون عدد العوامل رقماً", vbOKOnly + vbExclamation, "الكبابي"
   Exit Sub
End If

If Val(Trim$(A1)) <= 0 Or Val(Trim$(N1)) <= 0 Then
   MsgBox "يجب أن يكون عدد الأشياء وعدد العوامل أكبر من الصفر", vbOKOnly + vbExclamation, "الكبابي"
   Exit Sub
End If

If Val(Trim$(A1)) < Val(Trim$(N1)) Then
   MsgBox "يجب أن يكون عدد الأشياء أكبر من عدد العوامل", vbOKOnly + vbExclamation, "الكبابي"
   Exit Sub
End If

'عدد الأشياء
A = Val(Trim$(A1))
'عدد العوامل
N = Val(Trim$(N1))

Command1.Enabled = False

List1.Clear

ReDim Preserve iFrom(1 To N) As Integer
ReDim Preserve iTo(1 To N) As Integer

For I = 1 To N
    iFrom(I) = I
    iTo(I) = A - (N - I)
Next

Do

   If iFrom(N) < iTo(N) Then
  
      zData = ""
      For I = 1 To N
          zData = zData & iFrom(I) & ","
      Next
      zData = Left$(zData, Len(zData) - 1)
      List1.AddItem zData
      iFrom(N) = iFrom(N) + 1
      
   Else
  
      zData = ""
      For I = 1 To N
          zData = zData & iFrom(I) & ","
      Next
      zData = Left$(zData, Len(zData) - 1)
      List1.AddItem zData
      
      For I = N To 1 Step -1
      
          If iFrom(I) < iTo(I) Then
            
             iFrom(I) = iFrom(I) + 1
             For Z = I + 1 To N
                 iFrom(Z) = iFrom(Z - 1) + 1
             Next
             Exit For
            
          Else
          
             If I = 1 Then Exit Do
          
          End If
          
      Next
  
   End If
  
   DoEvents

Loop

MsgBox "تم الإنتهاء بنجاح", vbOKOnly + vbInformation, "VB_Coder"

Command1.Enabled = True

End Sub
كدة تبقى بتفكر صح . مش تقوللى غيرها للأرقام التي تريد ، أو ضع inputbox
[SIZE=3]وانا من بداية سؤالى وانا موضح أن المشكلة عندى فى أن عدد مرات التكرار متغير غير ثابت[/SIZE]
إقتباس :علمآ بأن عدد مرات التكرار متغير غير ثابت
الأستاذ الكبير/ناجى ابراهيم قال فى رده (إذا ذكرت لنا ما الغرض من ذلك فربما نستطيع مساعدتك بشكل أسهل)
ولكنه لم برد علينا حتى الآن





مازلنا فى انتظار رده بحل أسهل من هذا الحل الصعب الطويل
كود :
[align=left]
Private Sub Command1_Click()

Dim iFrom() As Integer
Dim iTo() As Integer
Dim A As Integer
Dim N As Integer
Dim I, Z As Integer

A = InputBox("الكبابى", "أدخل عدد الأشياء", "")
N = InputBox("الكبابى", "أدخل عدد العوامل", "")

List1.Clear

ReDim Preserve iFrom(1 To N) As Integer
ReDim Preserve iTo(1 To N) As Integer

For I = 1 To N
    iFrom(I) = I
    iTo(I) = A - (N - I)
Next

Do

   If iFrom(N) < iTo(N) Then
      zData = ""
      For I = 1 To N
          zData = zData & iFrom(I) & ","
      Next
      zData = Left$(zData, Len(zData) - 1)
      List1.AddItem zData
      iFrom(N) = iFrom(N) + 1
   Else
      zData = ""
      For I = 1 To N
          zData = zData & iFrom(I) & ","
      Next
      zData = Left$(zData, Len(zData) - 1)
      List1.AddItem zData
      For I = N To 1 Step -1
          If iFrom(I) < iTo(I) Then
             iFrom(I) = iFrom(I) + 1
             For Z = I + 1 To N
                 iFrom(Z) = iFrom(Z - 1) + 1
             Next
             Exit For
          Else
             If I = 1 Then Exit Do
          End If
      Next
   End If
   DoEvents

Loop

End Sub
[/align]

ولكم ألف شكر
الصفحات : 1 2