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

请教如果怎么删除数组中的相同元素

2012-06-06 
请问如果如何删除数组中的相同元素比如 经过前面的计算 得倒 数组 a()里边有些相同的元素 如果和重复的元

请问如果如何删除数组中的相同元素

比如 经过前面的计算 得倒 数组 a() 里边有些相同的元素 如果和重复的元素去掉 比如(1,2,2,3,3,4)去掉成变成(1,2,3,4)并且放入数组b() 并且把去掉的的元素放入 另外的 数组 c()中去


然后把得到的数组b()和 一个固定的数组d()比较, d()数组是固定的, 由本人先定义好 b()里边和d()相同则把d()删除 由本人输入进去,b()数组是d数组的子集
也就是 假如 计算后数组b()是(1,2,3,4) 而d()是(1,2,3,4,5,6,7,8,9) 得到的是数组d()是(5,6,7,8,9)



麻烦大家帮我写下好吗

[解决办法]
很容易。但似乎没有必要变更 a(),因为结果在 b() 中。

在窗体上放一个 ListBox,可以是不可见的。

VB code
Private Declare Function SendMessagebyString Lib _"user32" Alias "SendMessageA" (ByVal hWND As Long, _ByVal wMsg As Long, ByVal wParam As Long, _ByVal lParam As String) As LongPrivate Const LB_FINDSTRINGEXACT = &H1A2    '在 ListBox 中精确查找Dim i As Long, j As Long, tmp() As Integerj = LBound(c)List1.ClearFor i = LBound(a) To Ubound(a)    If SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1 , CStr(a(i))) = -1 Then        List1.AddItem a(i)    Else        c(j) = a(i)        j = j + 1    EndNext iFor i = 0 To List1.ListCount - 1    b(LBound(b) + i) = List1.List(i)Next iRedim tmp(LBound(d) To UBound(d))For i = LBound(d) To UBound(d)    tmp(i) = d(i)Next ij = LBound(d)For i = LBound(tmp) To UBound(tmp)    If SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1 , CStr(a(i))) > -1 Then        d(j) = tmp(i)        j = j + 1    End IfNext iRedim Preserve d(j - 1) 

热点排行