Code: (Select All)
_Title "LoadSort Demo" ' fixed 2024-04-29
ReDim dat$(1 To 1)
Do
Read insert$
If insert$ <> "EOD" Then loadSort insert$, dat$() Else Exit Do
Loop
For i = LBound(dat$) To UBound(dat$)
Print dat$(i); " ";
If concat$ = "" Then
lastWord$ = dat$(i)
cntWord = 1
concat$ = dat$(i) + "#" + _Trim$(Str$(cntWord))
Else
If dat$(i) = lastWord$ Then cntWord = cntWord + 1 Else cntWord = 1: lastWord$ = dat$(i)
concat$ = concat$ + ", " + dat$(i) + "#" + _Trim$(Str$(cntWord))
End If
Next
Print: Print: Print concat$
Data dog,cat,rabbit,frog,horse,dog,mouse,pig,cat,bat,cat,dog,bird,fish,cat,pig,dog,EOD
'this requires a separate dynamic array (used redim instead of dim) to load and sort array
Sub loadSort (insertN As String, dynArr() As String) ' version 2024-04-29
'note this leaves dynArr(0) empty! so ubound of array is also number of items in list
Dim ub, j, k
ub = UBound(dynArr)
If LBound(dynarr) = ub And dynArr(ub) = "" Then ' array not started yet
dynArr(ub) = insertN
Else
ReDim _Preserve dynArr(LBound(dynArr) To ub + 1) As String
For j = 1 To ub
If insertN < dynArr(j) Then ' GT to LT according to descending or ascending sort
For k = ub + 1 To j + 1 Step -1
dynArr(k) = dynArr(k - 1)
Next
Exit For
End If
Next
dynArr(j) = insertN
End If
End Sub
b = b + ...