Oppure

Loading
21/04/09 12:42
azz.ciccio
ciao a tutti stavo cercando di scrivere un'array con relativo codice per ordinare la lista.
pero' aime' il risultato e' sempre 0
Option Explicit
Dim stringa(10) As String
Dim V(10), i, j, temp As Integer
Private Sub Command1_Click()
Dim i As Integer
For i = 0 To UBound(stringa)
    List1.AddItem stringa(i)
Next
End Sub
Private Sub Command2_Click()
For i = 1 To 10
 For j = i + 1 To 10
  If V(i) > V(j) Then
  temp = V(i)
    V(i) = V(j)
    V(j) = temp
  End If
 Next j
Next i
MsgBox temp
End Sub
Private Sub Form_Load()
    stringa(0) = "3 0 1 2.6 5.2 .07 .07 .003"
    stringa(1) = "3 0 1 2.6 5.2 .07 .07 .063"
    stringa(2) = "3 0 1 2.6 5.2 .07 .07 .053"
    stringa(3) = "3 0 1 2.6 5.2 .07 .07 .033"
    stringa(4) = "3 0 1 2.6 5.2 .07 .07 .023"
    stringa(5) = "3 0 1 2.6 5.2 .07 .07 .033"
    stringa(6) = "3 0 1 3.0 5.2 .07 .07 .049"
    stringa(7) = "3 0 1 3.0 5.2 .07 .07 .019"
    stringa(8) = "3 0 1 3.0 5.2 .07 .07 .012"
    stringa(9) = "3 0 1 3.0 5.2 .07 .07 .011"
End Sub


idee???:-|

un'ultima domanda, e' possibile dichiarare un'array dinamico senza nessun valore?
mi spiego, i valori che andro' a caricare variano da 1 a 100000 o piu'...

grazie:k:
Ultima modifica effettuata da azz.ciccio 21/04/09 12:52
aaa
21/04/09 13:22
Uhm, avevo il diagramma a blocchi di un programma di sort da qualche parte. Se lo trovo ti posto lo pseudocodice ._.
21/04/09 16:45
theprogrammer
Se vuoi inserire quei dati ordinati nella listbox, ti basta impostare la proprieta'

Sorted

a True nell'IDE. Avrai gli elementi gia' ordinati.

Ma se vuoi scrivere tu l'ordinamento, non devi usare un vettore V quando gli elementi da ordinare stanno nel vettore stringa ...
aaa
23/04/09 9:22
Louis
Ciao ciccio,
ti ho predisposto le seguenti routine che sembrano funzionare. Per l'ordinamento della List, come ti è già stato detto basta usare la prop. Sorted. Comunque con un noto algoritmo di ordinamento é possibile ottene le due sequenze (crescente < e decrescente >;)per inserire gli elementi nei controlli (allo scopo ho utilizzato un Txt).

Dim stringaV() As Variant
Dim i As Integer, j As Integer, temp As String
'---------------------------------------------
Private Sub Command1_Click()

' Carica il vettore:
    stringaV = Array("3012.65.2.07.07.003", "3012.65.2.07.07.063", "3012.65.2.07.07.053", _
    "3012.65.2.07.07.033", "3012.65.2.07.07.023", "3012.65.2.07.07.033", "3013.05.2.07.07.049", _
    "3013.05.2.07.07.019", "3013.05.2.07.07.012", "3013.05.2.07.07.011")
    ReDim Preserve stringaV(LBound(stringaV) To UBound(stringaV))

'Carica la List:
    'List1.Sorted = True - ordina in senso crescente:
    For i = LBound(stringaV) To UBound(stringaV)
        List1.AddItem stringaV(i)
    Next i

End Sub
'---------------------------------------------
Private Sub Command2_Click()
    Dim risultOrd As String

' Dispone un ordinamento crescente:
    For i = UBound(stringaV, 1) To LBound(stringaV, 1) Step -1
        For j = LBound(stringaV, 1) To i - 1
            If stringaV(j) < stringaV(j + 1) Then
                temp = stringaV(j)
                stringaV(j) = stringaV(j + 1)
                stringaV(j + 1) = temp
            End If
        Next j
    Next i
    
' Visualizza gli elementi in una Txt :
    'Text1.MultiLine
    For i = UBound(stringaV, 1) To LBound(stringaV, 1) Step -1
        risultOrd = risultOrd & Space(1) & stringaV(i)
    Next i
   Text1.Text = risultOrd

End Sub


:k:
aaa
23/04/09 10:31
azz.ciccio
Postato originariamente da Louis:

Ciao ciccio,
ti ho predisposto le seguenti routine che sembrano funzionare. Per l'ordinamento della List, come ti è già stato detto basta usare la prop. Sorted. Comunque con un noto algoritmo di ordinamento é possibile ottene le due sequenze (crescente < e decrescente >;)per inserire gli elementi nei controlli (allo scopo ho utilizzato un Txt).
:k:


ciao, grazie 1000 la provo subito e ti faccio sapere.
grazie ancora.
A.
aaa