vb中如果给一个数值怎么样让它在一组数据中找到一个最接近大于它的数和一个最接近小于它的数值
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/06 07:02:25
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表示,希望哪位大侠可以帮个忙谢谢!
现在有一组数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 遍历就是访问数组中的每一个元素
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 遍历就是访问数组中的每一个元素
如何用c语言在一组数中查找一个和已知数最接近的数值,像excel中的hlookup一样
excel中,怎样求出所有数值中,那些数值的和最接近一个数
vb 最接近的数有一组数值10002000300040005000600070008000900010000120001
Excel求一组数中于一个数最接近的数 怎么办
在matlab中如果计算的结果是一个表达式,想把它化为具体的数值用那个函数
我要在EXCEL中实现大于一个数等于另一个公式,小于一个数,等于一个数值.如何处理?
在一个十六进制数的某一位是符号F ,它表示的数值大小是
一组数中每个数值都不一样那么它的众数要怎么求
excel 在一组数中筛选出和等于所设定的一个特定值的几个数值的办法
一个物体它放出热量的数值等于它内能减少的数值吗?
如果a的平方是一个整数的平方,其中a>0,那么与它最接近的一个平方数(整数的平方)是多少?
excel表格中两个数据相乘后得出的数值大于或等于其中一个数值的公式如何设置?