vb 关于比较

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:20:17
private function f(byval dd as string,byval cc As String) as integer
Dim i As Integer, j As Integer
For i = 1 To Len(dd)
For j = 1 To Len(cc)
If Mid(cc, j, 1) = Mid(dd, i, 1) Then f = f + 1
Next j
Next i
end function

private sub command1_click()

msgbox f("005","567")
end sub
现在想改成
private sub command1_click()
x=5,15,6
y=7,5,16
msgbox f(x,y)
end sub
也就是x的3个数和y的3个数比较重复的,但和上面代码不同的是,
f("005","067") ,现在的代码输出的是2,因为第一组有两个0和第二组的0重复,我要的效果是像这样的只能把他辨认成1,组数字都有两个数字和另一组数字的两个数字相同才辨认为2,一组的3个数字和另一组3个数字相同辨认为3
没有相同择0
例:
x=5,15,6
y=7,1,16
msgbox f(x,y) 应该是0

x=5,15,6
y=7,5,16
msgbox f(x,y) 应该是1
x=5,15,6
y=7,5,5
msgbox f(x,y) 应该是1
x=0,15,6
y=0,0,0msgbox f(x,y) 应该是1
x=0,0,6
y=7,0,0
msgbox f(x,y) 应该是2
x=5,5,5
y=7,5,5
msgbox f(x,y) 应该是2
x=5,15,16
y

Dim a As String

Private Function f(ByVal dd As String, ByVal cc As String) As Integer

Dim i As Integer, j As Integer

For i = 1 To Len(dd)

For j = 1 To Len(cc)

If Mid(cc, j, 1) = Mid(dd, i, 1) Then

If i = j Then

f = f + 1

a = a + Mid(cc, j, 1)

ElseIf a = "" Then

a = a + Mid(cc, j, 1)

f = f + 1

ElseIf i <> j And (InStr(1, a, Mid(cc, j, 1)) = 0) Then

a = a + Mid(cc, j, 1)

f = f + 1

End If

End If

Next j

Next i<