请问VB如何编写代码去掉一组数里几个相同的数而只留一个?
Dim ShaHao(1 To 15) As Integer
ShaHao(1) = tF - tE
ShaHao(2) = tF - tD
ShaHao(3) = tF - tC
ShaHao(4) = tF - tB
ShaHao(5) = tF - tA
ShaHao(6) = tE - tD
ShaHao(7) = tE - tC
ShaHao(8) = tE - tB
ShaHao(9) = tE - tA
ShaHao(10) = tD - tC
ShaHao(11) = tD - tB
ShaHao(12) = tD - tA
ShaHao(13) = tC - tB
ShaHao(14) = tC - tA
ShaHao(15) = tB - tA
上面的这组数里,比如有6个数是相等的;
如何去掉5个只留一个?
代码是如何编写的?
感谢啊!
问题点数:100、回复次数:6Top
1 楼EexeNet(Eexe.Net)回复于 2006-06-03 22:34:00 得分 20
关注,我现在在想。。。。。。Top
2 楼of123()回复于 2006-06-03 23:07:40 得分 20
很容易(例如利用 ListBox):
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 Long
Private Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精确查找
Private Sub Command1_Click()
Dim i As Integer, n As Integer
For i = 0 To Ubound(ShaHao)
n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, ShaHao(i))
If n = -1 Then List1.AddItem ShaHao(i)
Next i
End Sub
最后在 List1 的列表项中得到的就是唯一的数据。Top
3 楼lzheng2001(1加1)回复于 2006-06-03 23:07:54 得分 20
相信没有什么好的算法,只能用循环. 而且还要另建一个数组.
如果有数据库的话,可以利用数据库,把数据的值插入到数据库中的临时表中(临时表是内存操作比较快), 然后用sql 语句来返回结果. 对于很大量的数据,这种方法比较有效.Top
4 楼northwolves(狼行天下)回复于 2006-06-03 23:10:05 得分 20
去掉一组数里几个相同的数而只留一个
--------------------------------------
可以利用集合关键字的唯一性,如:
Private Sub Command1_Click()
Dim i As Integer, x As New Collection
On Error Resume Next
For i = 1 To 15
x.Add shahao(i), "x" & shhao(i)
Next
For i = 1 To x.Count
Debug.Print x(i)
Next
End Sub
Top
5 楼lsftest()回复于 2006-06-03 23:19:16 得分 20
数组不大的话也可以试试join/replace.....Top
6 楼liuyh7788()回复于 2006-06-04 00:27:03 得分 0
谢谢!
自己解决了;代码如下;
--------------------------------------------------------------------------------
Dim tH As String
Dim nHa As String, nHb As String, nHc As String, nHd As String
Dim qHa As String, qHb As String, qHc As String
Dim QiHao As String
Dim NianFen As Long
Dim Nian As Long
Dim tA As Integer, tB As Integer, tC As Integer, tD As Integer, tE As Integer, tF As Integer, tBh As Integer
Dim ShaHao(1 To 15) As Integer
Dim sH As Integer
Dim hS As Integer
Dim lFw(1 To 15) As Integer
Dim Lf(1 To 15) As Integer
Dim LanFw As String
Dim Ti As Integer
Dim X As Long
Dim Q(1 To 15) As Integer
Dim i As Integer
Dim j As Integer
Dim Y As Integer
Dim z As Integer
Ti = 0
X = 0
For i = 1 To 15
Q(i) = 0
Next
tA = Text1
tB = Text2
tC = Text3
tD = Text4
tE = Text5
tF = Text6
ShaHao(1) = tF - tE
ShaHao(2) = tF - tD
ShaHao(3) = tF - tC
ShaHao(4) = tF - tB
ShaHao(5) = tF - tA
ShaHao(6) = tE - tD
ShaHao(7) = tE - tC
ShaHao(8) = tE - tB
ShaHao(9) = tE - tA
ShaHao(10) = tD - tC
ShaHao(11) = tD - tB
ShaHao(12) = tD - tA
ShaHao(13) = tC - tB
ShaHao(14) = tC - tA
ShaHao(15) = tB - tA
For sH = 1 To 15 Step 1
If ShaHao(sH) <= 16 Then
Ti = Ti + 1
lFw(Ti) = ShaHao(sH)
End If
Next
For i = 1 To Ti - 1
For j = i + 1 To Ti
If lFw(i) = lFw(j) Then
lFw(i) = 0
End If
Next j
Next i
For i = 1 To Ti
If lFw(i) > 0 Then
X = X + 1
Q(X) = lFw(i)
End If
Next
For i = X To 1 Step -1
For j = 1 To X - 1
If Q(j) > Q(j + 1) Then
Y = Q(j + 1)
Q(j + 1) = Q(j)
Q(j) = Y
End If
Next j
Next i
For i = 1 To X
If Q(i) < 10 Then
LanFw = LanFw & "0" & Q(i) & " "
Else
LanFw = LanFw & Q(i) & " "
End If
Next
Label9.Caption = LanFw
Top




