07. oktober 2004 - 20:02
Der er
2 kommentarer og
1 løsning
Ordning af streng fra array.
Hey
Er der nogen der har nogle gode idéer til hvordan jeg kan lave arrRel om til et array, arrStr, bestående af nogle understrenge sorteret efter det første nr i rækken (eg. 0 ved 0-22).
arrRel:
arrRel(0) = 0-22
arrRel(1) = 0-48
arrRel(2) = 0-49
arrRel(3) = 22-23
arrRel(4) = 23-25
arrRel(5) = 23-51
arrRel(6) = 49-50
arrStr:
arrStr(0) = 0-22,0-48,0-89
arrStr(1) = 22-23
arrStr(2) = 23-25,23-51
arrStr(3) = 49-50
Håber nogen kan hjælpe.
Mvh
12. oktober 2004 - 13:03
#1
Hvis arrRel er sorteret som den er i det tilfælde du har vist, kan du bruge følgende.
function firstPart(str)
if instr(1,str,"-") >0 then
firstPart=left(str,Instr(1,str,"-")-1)
else
firstPart=""
end if
end function
function mkStrArr(arr)
dim prev,str
prev=firstPart(arr(LBound(arr)))
str=arr(LBound(arr))&","
for a = LBound(arr)+1 to UBound(arr)
if firstPart(arr(a))=prev then
str=str&arr(a)&","
else
str=str&","&arr(a)&","
prev=firstPart(arr(a))
end if
next
mkStrArr = split(left(str,len(str)-1),",,")
end function
dim str,arrStr,msg,a,arrRel(6)
arrRel(0) = "0-22"
arrRel(1) = "0-48"
arrRel(2) = "0-49"
arrRel(3) = "22-23"
arrRel(4) = "23-25"
arrRel(5) = "23-51"
arrRel(6) = "49-50"
arrStr=mkStrArr(arrRel)
18. oktober 2004 - 18:45
#3
Til at sortere arrayet alfabetisk bruger jeg CombSort():
--
Function CombSort(byVal UnsortedArray)
Dim I, J, Temp, Gap, Swapped
Dim ArrSize, Combcom, Combswap
Const Shrink = 1.3
ArrSize = UBOUND( UnsortedArray )
Gap = Arrsize - 1
Do
Gap = Int(Gap / Shrink)
Swapped = True
Combcom = Combcom + 1
For J = 0 To Arrsize - Gap
If UnsortedArray(J) > UnsortedArray(J + Gap) Then
Temp = UnsortedArray(J)
UnsortedArray(J) = UnsortedArray(J + Gap)
UnsortedArray(J + Gap) = Temp
Swapped = False
Combswap = Combswap + 1
End If
Next
Loop Until Not Swapped And Gap = 1
CombSort = UnsortedArray
End Function