我有一个 vb6 函数,最多需要 7 个数字,对它们进行排序,找到一个共同点。在这个数字序列中会有一个间隙。我还想找出丢失的号码。
示例输入是19,17,20,and 16
. 输出应该是16,17,18,19,20
这个顺序的数组。有什么帮助吗?我可能能够将 vb.net 代码解释为 vb6,但我更喜欢 vb6。
以下是需要做的事情的概要:
请注意,您根本不需要对数字进行排序。你只需要找到极值。
这是VB6中的代码大纲:
Function RangeFrom(ParamArray Numbers() As Long) As Long()
Dim Lowest As Long
Dim Highest As Long
Lowest = Numbers(0)
Highest = Numbers(0)
Dim Number As Long
For Each Number In Numbers
If Number < Lowest Then Lowest = Number
If Number > Highest Then Highest = Number
Next
Dim Result(0 To Highest - Lowest) As Long
Dim I As Long
For I = 0 To Highest - Lowest
Result(I) = Lowest + I
Next
FromRange = Result
End Function
由于您也标记了 VB.NET,这应该可以转换为 VB6(我已经避免使用 Linq):
Public Shared Function FillGaps(input As Int32()) As Int32()
Dim output = New List(Of Int32)
Array.Sort(input)
' now we'll find the min/max-values at the first/last indices
For i As Int32 = input(0) To input(input.Length - 1)
output.Add(i)
Next
Return output.ToArray()
End Function
按以下方式使用它:
Dim intArray = {19, 17, 20, 16}
intArray = FillGaps(intArray)
请注意,这种方法会跳过重复项。