【发布时间】:2020-02-25 16:33:36
【问题描述】:
我有两个数组:TempSubject(),它携带一个科目列表,和friRoutine(),它指示何时教授科目。
我需要强制执行一项规则,即任何特定科目都不能在特定日期教授两次。我有一个名为DetectDuplicate(friRoutine, Tempsubject(i)) 的函数,它检查friRoutine() 和TempSubject() 并查找friRoutine 是否已经包含特定主题。如果否,则将该唯一主题添加到 friRoutine。否则继续循环下一个主题。我的代码如下提供-
Dim TempSubject() As String = {"Maths","English","Sanskrit","Sanskrit","Urdu","Urdu","Urdu","French","French","French","Physical Education","Physical Education","Game","Game", "Science"}
dim c4 as integer = 0
dim limitcounter = 0
dim friRoutine() as string
reedim friRoutine(6)
While c4 < TempSubject.Length
If DetectDuplicate(friRoutine, TempSubject(c4)) = False And limitcounter4 < 7 Then
friRoutine(limitcounter4) = TempSubject(c4)
'MessageBox.Show(c1 & ": " & limitcounter1 & ": " & tueRoutine(limitcounter1))
Debug.WriteLine("Friday: " & c4 & ": " & limitcounter4 & ": " & friRoutine(limitcounter4))
TempSubject.RemoveAt(c4)
limitcounter4 = limitcounter4 + 1
End If
c4 = c4 + 1
End While
Private Function DetectDuplicate(ByVal arr As Array, ByVal str As String) As Boolean
Dim numcount As Integer = 0
For numcount = 0 To arr.Length - 1
If arr(numcount) = str Then
Return True
End If
Next
Return False
End Function
输出应该是
friRoutine = Math, english, sanskrit, Urdu, French, Physical education, game
但不幸的是,缺少英语。 输出是:
friRoutine = Math, sanskrit, Urdu, French, Physical education, game, science
我害怕使用我的代码,因为它可能会在任何时候破坏整个过程。 我认为问题在于函数 DetectDuplicate()
编辑(来自评论)
我必须删除使用过的元素。我最初的课程将有 42 个科目和 6 天。每天7节。例如,如果我在星期一选择了 7 个独特的科目,那么在接下来的 6 天里,我必须在剩下的 5 天里调整 35 个科目。
【问题讨论】:
-
我确定我们在过去几周看到了这个问题,但我在任何地方都找不到。之前问过然后删了吗?
-
你能把作业问题贴在这里以便我们了解要求吗?
标签: arrays vb.net loops duplicates