Private Sub Command1_Click()
Dim flag As Boolean
Dim tH(15), cH(16), tiH(51), rtiH(51), tC(51), cC(51), q, coC(51), rcC(51), t(7), c(7), r(51), rr(51), tT(12), cT(12), teT(51), rtT(51), ta(51, 4), z, b, v, x As Integer
'THISE IS APART FOR PROCESS THE TIME THE TIME
For i = 1 To 15
tH(i) = i
'Print tH(i)
Next i
For i = 1 To 9
cH(i) = 3
'Print cH(i)
Next i
For i = 10 To 15
cH(i) = 4
'Print cH(i)
Next i
i = 1
List1.AddItem "Course Teacher Room Time"
While (i < 52)
Randomize
x = Rnd() * 15 + 1
If cH(Int(x)) > 0 Then
tiH(i) = Int(x)
cH(Int(x)) = cH(Int(x)) - 1
rtiH(i) = Int(x)
'c3.AddItem (tiH(i))
'Print rtiH(i);
i = i + 1
End If
Wend
'THES PART FOR PROCESS THE CORSES THE CORSES
For i = 1 To 51
tC(i) = i
'Print tC(i);
Next i
For i = 1 To 51
cC(i) = 1
'Print cC(i)
Next i
i = 1
While (i < 52)
Randomize
x = Rnd() * 50 + 1
If cC(Int(x)) > 0 Then
coC(i) = Int(x)
cC(Int(x)) = cC(Int(x)) - 1
'c4.AddItem coC(i)
rcC(i) = Int(x)
'Print rcC(i);
i = i + 1
End If
Wend
'THES PART FOR PROCESS THE ROMS THE ROMS
For i = 1 To 7
t(i) = i
'Print t(i)
Next i
For i = 1 To 5
c(i) = 7
'Print c(i)
Next i
For i = 6 To 7
c(i) = 8
'Print c(i)
Next i
i = 1
While (i < 52)
Randomize
x = Rnd() * 6 + 1
If c(Int(x)) > 0 Then
r(i) = Int(x)
c(Int(x)) = c(Int(x)) - 1
'c2.AddItem (r(i))
rr(i) = Int(x)
'Print rr(i);
i = i + 1
End If
Wend
'THES PART FOR PROCESS THE TEACHERS THE TEACHERS
For i = 1 To 1
cT(1) = 3
'Print cT(i)
Next i
For i = 2 To 8
cT(i) = 4
'Print cT(i)
Next i
For i = 9 To 12
cT(i) = 5
'Print cT(i)
Next i
i = 1
While (i <= 51)
Randomize
x = Rnd() * 11 + 1
If cT(Int(x)) > 0 Then
teT(i) = Int(x)
cT(Int(x)) = cT(Int(x)) - 1
'C1.AddItem (teT(i))
rtT(i) = Int(x)
'Print rtT(i);
i = i + 1
End If
Wend
For i = 1 To 51
'List2.AddItem rcC(i)
'List3.AddItem Str(I) + Str(rtT(I))
'List4.AddItem Str(I) + Str(rr(I))
'List5.AddItem Str(I) + Str(rtiH(I))
Next i
Dim rnd1, rnd2, rnd3, rnd4, TTT, TTTT, lz As Integer
i = 1
While (i < 52)
10: lz = Int(Rnd() * 51) + 1
'flag = True
If (rcC(lz) <> 0) Then
rnd1 = rcC(lz)
'rcC(lz) = 0
Else
GoTo 10
End If
Randomize
20:
z = Int(Rnd() * 51) + 1
'List2.AddItem z
If rtT(z) <> 0 Then
rnd2 = rtT(z)
'rtT(z) = 0
Else
GoTo 20
End If
Randomize
30: TTT = Int(Rnd() * 51) + 1
If rr(TTT) <> 0 Then
rnd3 = rr(TTT)
'rr(TTT) = 0
Else
GoTo 30
End If
Randomize
40: TTTT = Int(Rnd() * 51) + 1
If rtiH(TTTT) <> 0 Then
rnd4 = rtiH(TTTT)
'Print rtiH(TTTT)
'rtiH(TTTT) = 0
Else
GoTo 40
End If
ta(i, 1) = rnd1
ta(i, 2) = rnd2
ta(i, 3) = rnd3
ta(i, 4) = rnd4
flag = True
For j = 1 To i - 1
If ((ta(i, 4) = ta(j, 4)) And (ta(i, 3) <> ta(j, 3)) And (ta(i, 2) <> ta(j, 2))) And Not flag Then
flag = False
End If
Next j
If flag Then
List1.AddItem Str(ta(i, 1)) + " " + Str(ta(i, 2)) + " " + Str(ta(i, 3)) + " " + Str(ta(i, 4))
i = i + 1
rtT(z) = 0
rr(TTT) = 0
rtiH(TTTT) = 0
rcC(lz) = 0
End If
Wend
End Subارجو من كل من عنده خبرة يفيدني ويجرب هالكود والله اتعقدت وعجزت عن حلها ومو لاقي حد يعرف لحلها حتى دكتورنا ماقدرلها
يااخوان انا بعتت برنامج عبارة عن مصفوفة من 51 صف واربع اعمدة ورح تشوفوة لمى تطبقو الكود رح تشوفو list فيها اربع اعمدة واسماء هالاعمدة كالتالي(course,,teacher,,room,,time) بالترتيب وزي ماانتم شايفين انا عملت هالمصفوفة وحاط شروط بس مابحققلي الشروط بشكل تمام يعني انا حاكيلو مايعطيني تشابة
بحيث مثلا مايطلع عندي تعارض الوقت مع المادة..او دكتورين مختلفين يكونو عندهم بنفس الوقت وبنفس القاعه..او يكون نفس الدكتور عندو بقاعتين مختلفتين وبنفس الوقت وغيرو من امور التعارض
فانا حطيت هالشروط انو مابدي يعطيني هيك تعارض ولكن لافائدة بعطيني
مثال توضيحي لصفين من المصفوفة 2 3 4 5
5462
هون مثلا مابدي يطلع عندي هيك حالة لانه هاذ بعني انو الماده(5) للدكتور (4) عندو بالقاعه(3) وبالوقت(2)
والصف الثاني برضو انو المادة (5) للدكتور (4) عندو ايضا بقاعه ثانية(6) وبنفس الوقت(2)
فالمطلوب انو مابدي ياه يطلع هيك حالة لانو هون صار في تعارض لانه هيك بكون الدكتور بعطي نفس المادة وبنفس الوقت ولكن بقاعات مختلفه وهذا لايجوز اتمنى انو الفكرة تكون وصلت
كل اللي بدي ياه انو مايطلعلي تعارض وبس
مشكورين ارجوووو تطبيق الكود لحتى تبين فكرة البرنامج

