首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

求一段能够双向比较两个数组程序,何位能帮忙

2013-01-04 
求一段能够双向比较两个数组程序,哪位能帮忙?数组a:1、2、a、b、c、d、f数组b:a、b、c、d、e把数组a和b比较,最后输出

求一段能够双向比较两个数组程序,哪位能帮忙?
数组a:1、2、a、b、c、d、f
数组b:a、b、c、d、e

把数组a和b比较,最后输出的结果是:
正向比较(b里没有,a里有的),不能匹配的数据是:1、2、f
反相比较(b里有,a里没有的),不能匹配的数据是:e

请教高手,麻烦写出详细的程序,多谢~~
[解决办法]
看这个吧,更清楚些。


Option Explicit
Public Sub main()
    Dim A(), B(), AtoB(), BtoA()
    A = Array("a1", "a2", "a", "b", "c", "d", "f")
    B = Array("a", "b", "c", "d", "e")
    CompareArrs A(), B(), AtoB()
    CompareArrs A(), B(), BtoA(), False
End Sub
Public Function CompareArrs(Arra(), Arrb(), ArrResult(), Optional Direction As Boolean = True) As Boolean
    Dim Dic1, Dic2, i, j
    Set Dic1 = CreateObject("scripting.dictionary")    'A数组的字典形式
    Set Dic2 = CreateObject("scripting.dictionary")    'A数组和B数组的交集的字典形式
    For i = LBound(Arra) To UBound(Arra)
        Dic1(Arra(i)) = ""
    Next i
    For i = LBound(Arrb) To UBound(Arrb)
        If Dic1.Exists(Arrb(i)) Then
            Dic2(Arrb(i)) = ""
        End If
    Next i
    j = 0
    Erase ArrResult
    If Direction Then    '正向比较,即数组A中有且数组B中没有的元素
        For i = LBound(Arra) To UBound(Arra)
            If Not Dic2.Exists(Arra(i)) Then
                ReDim Preserve ArrResult(j)
                ArrResult(j) = Arra(i)
                j = j + 1
            End If
        Next i
    Else    '负向比较,即数组B中有且数组A中没有的元素
        For i = LBound(Arrb) To UBound(Arrb)
            If Not Dic2.Exists(Arrb(i)) Then
                ReDim Preserve ArrResult(j)
                ArrResult(j) = Arrb(i)
                j = j + 1
            End If
        Next i
    End If
    If j = 0 Then
        CompareArrs = False      '表示ArrResult数组中没有匹配的元素


    Else
        CompareArrs = True       '表示ArrResult数组中有匹配的元素
    End If
    Set Dic1 = Nothing
    Set Dic2 = Nothing
End Function

热点排行