作业帮 > 综合 > 作业

vb中如果给一个数值怎么样让它在一组数据中找到一个最接近大于它的数和一个最接近小于它的数值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 21:38:13
vb中如果给一个数值怎么样让它在一组数据中找到一个最接近大于它的数和一个最接近小于它的数值
现在有一组数5.10.15.20.25.如果有一个数a,当a=13时,由于13大于10小于15,所以b=10*15.当a=21时,由于21大于20小于25,所以b=20*25,又假如a等于数组中的某个数值,那它就等于它本身.这个过程如何用vb表示,希望哪位大侠可以帮个忙谢谢!
'在窗体上画一个名称为Command1的按钮就可以运行了
    
 Private Sub Command1_Click()
    Dim i As Integer, myNumber As Integer, myResult As Long
    Dim intMyArray(0 To 4) As Integer
   
    '-----------------------------
    '这部分是测试数据,根据需要自己设置
    intMyArray(0) = 20
    intMyArray(1) = 25
    intMyArray(2) = 10
    intMyArray(3) = 15
    intMyArray(4) = 5
    myNumber = 5
    '-----------------------------
    '首先对数组数据进行排序,防止用来判断的数组不标准产生误差
    If MySort(intMyArray()) Then
         
        '对要进行处理的数值进行校验,排除非法数据
        If myNumber > intMyArray(UBound(intMyArray)) Or myNumber < intMyArray(0) Then
            MsgBox "输入值超出可处理范围,请检查", vbExclamation, "提示"
            Exit Sub
        End If
    
        If JudgeNumber(intMyArray, myNumber, myResult) Then
            Print myNumber & "的处理结果为:" & myResult
        Else
            MsgBox "处理失败失败", vbExclamation, "提示"
        End If
    Else
        MsgBox "排序失败", vbExclamation, "提示"
    End If
End Sub
 
Private Function MySort(intArray() As Integer) As Boolean
    Dim i      As Integer, j As Integer
    Dim intTmp As Integer
    On Error GoTo ErrLab
    For i = 0 To UBound(intArray) - 1
        For j = 0 To UBound(intArray) - i - 1
            If intArray(j) > intArray(j + 1) Then
                intTmp = intArray(j)
                intArray(j) = intArray(j + 1)
                intArray(j + 1) = intTmp
            End If
        Next
    Next
    MySort = True
ErrLab:
    If Err.Number <> 0 Then
        MySort = False
    End If
End Function
 
'lngResult为计算结果
Private Function JudgeNumber(intArray() As Integer, ByVal intInput As Integer, ByRef lngResult As Long) As Boolean
    Dim i As Integer
    
    
    On Error GoTo ErrLab
    
    For i = 0 To UBound(intArray)
        If intInput <= intArray(i) Then
            If intInput = intArray(i) Then
                lngResult = intInput
            Else
                lngResult = intArray(i - 1) * intArray(i)
            End If
            Exit For
        End If
    Next
    
    JudgeNumber = True
    Exit Function
ErrLab:
    JudgeNumber = False
End Function
再问: 能不能详细介绍一下整个语句的意思,本人刚刚接触vb,很多语句不了解!希望大侠可以帮到我!首先谢谢你的回答!
再答: 已经写的比较详细了 MySort函数主要是对你那个数组进行排序,因为你那个数组有可能不是严格按照5,10,15的顺序,这样会导致失败,不要也可以的 JudgeNumber就是你要实现的主要功能,对数组进行遍历,找到比给定值大或者相等值,这样就获得最终结果,并退出。 你还有哪个地方不懂?
再问: 谢谢啊!不好意思,我还想问一下,如果我要把两个数的积开平方得出的小数输出来怎么办?比如显示sqr(20*25)的小数结果。遍历不了解能简单说一下吗?十分感激啊
再答: Print Sqr(1.44) 结果输出: 1.2 遍历就是访问数组中的每一个元素