vb循环和条件判断现在有一个数组(5个元素),如果这五个数值有相差小于1的,合并为一组并求平均数,如果相差没有小于1的,保留原数,求最后有几组,并求出各组平均数.如果不清楚就看例子!例
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 04:45:14
vb循环和条件判断现在有一个数组(5个元素),如果这五个数值有相差小于1的,合并为一组并求平均数,如果相差没有小于1的,保留原数,求最后有几组,并求出各组平均数.如果不清楚就看例子!例
vb循环和条件判断
现在有一个数组(5个元素),如果这五个数值有相差小于1的,合并为一组并求平均数,如果相差没有小于1的,保留原数,求最后有几组,并求出各组平均数.如果不清楚就看例子!
例1:一个数组数值分别为 1,3,4,7,8
3和4相差1,7和8相差1,合并为一组,所以一共有3组
第一组数值为1,第二组数值为(3+4)/2,第三组数值为(7+8)/2
输出:组数|1 2 3
数值|1 3.5 7.5
例2:一个数组1,3,4,5,6
分为2组,第一组1,第二组(3+4+5+6)/4
输出:组数|1 2
数值|1 4.5
vb循环和条件判断现在有一个数组(5个元素),如果这五个数值有相差小于1的,合并为一组并求平均数,如果相差没有小于1的,保留原数,求最后有几组,并求出各组平均数.如果不清楚就看例子!例
Private Sub Command1_Click()
Dim k()
Dim k2()
Label1.Caption = "": Label2.Caption = ""
k = Array(4, 7, 5, 6, 9)
'排序
BubbleSort2 k
For i = 0 To UBound(k)
'Debug.Print k(i) '测试排序结果
Next
'分组
ReDim k2(0)
k2(0) = 0
For i = 0 To UBound(k) - 1
If k(i + 1) - k(i) > 1 Then
ReDim Preserve k2(UBound(k2) + 1)
k2(UBound(k2)) = i + 1
End If
Next
ReDim Preserve k2(UBound(k2) + 1)
k2(UBound(k2)) = UBound(k) + 1
'求每组结果
For i = 0 To UBound(k2) - 1
tmp = 0: tmp1 = 0
For n = k2(i) To k2(i + 1) - 1
tmp = tmp + k(n)
tmp1 = tmp1 + 1
Next
tmp = tmp / tmp1
Label1.Caption = Label1.Caption & (i + 1) & " "
Label2.Caption = Label2.Caption & tmp & " "
Next
End Sub
'冒泡排序法
Private Function BubbleSort2(ArrayToSort()) As Boolean
Dim SortLoop As Long
Dim HoldValue
Dim ChangeMade As Boolean
Dim endLoop As Long
ChangeMade = True
Do While ChangeMade
ChangeMade = False
For SortLoop = LBound(ArrayToSort) To UBound(ArrayToSort) - 1
If ArrayToSort(SortLoop) > ArrayToSort(SortLoop + 1) Then
HoldValue = ArrayToSort(SortLoop)
ArrayToSort(SortLoop) = ArrayToSort(SortLoop + 1)
ArrayToSort(SortLoop + 1) = HoldValue
ChangeMade = True
End If
Next SortLoop
Loop
BubbleSort1 = True
End Function