Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6] Riordinare array in ordine crescente/decrescente

    come posso fare cio avendo un array (integer) ?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Con un qualsiasi algoritmo di sort.

  3. #3
    :master: devo crearmi una funzione o ne esiste gia una?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,472
    Non esistono funzioni di ordinamento "native" per VB6.

  5. #5
    era quello che volevo sapere, grazie!
    ora cerco di farmi una routine.
    sto pensando a dei cicli, e' questa la strada che devo percorrere?

  6. #6
    se a qualcuno puo' interessare ho risolto in questo modo:

    codice:
    Private Sub Sort_Desc(arr() As String)
        Dim i As Integer, c As Integer, t As Integer
        Dim DoAdd As Boolean
        Dim newArr() As String
        ReDim newArr(0)
        t = UBound(arr) + 1
        c = 0
        Do
            DoEvents
            DoAdd = True
            'controllo il numero selezionato con tutti i numeri nell'array
            For i = 0 To UBound(arr)
                'se il numero selezionato e' minore di un solo numero nell'array
                'lo "scarto" e passo al successivo (per poi riprenderlo dopo)
                If Int(arr(c)) < Int(arr(i)) Then
                    DoAdd = False
                    Exit For
                End If
            Next i
            If DoAdd = True Then
                'se il numero non e' stato scartato (quindi e' il maggiore)...
                ReDim Preserve newArr(UBound(newArr) + 1) 'ridimensiono nuovo array
                newArr(UBound(newArr)) = arr(c) 'aggiungo il numero nel nuovo array
                'cambio il numero selezionato in 0,
                'in modo che non sia piu maggiore a nessun numero nell'array originale
                arr(c) = 0
                'sottraggo 1 a t
                t = t - 1
            End If
            c = c + 1
            'se c e' oltre i limiti dell'array azzero l'indice di selezione
            If c = UBound(arr) + 1 Then c = 0
        'se t e' = a 0, vuoldire che sono stati controllati tutti i numeri e posso uscire dal ciclo
        Loop Until t = 0
        arr = newArr
    End Sub
    non l'ho commentato molto ma si dovrebbe capire

    ciao e grazie Oregon

  7. #7
    Originariamente inviato da 814(k m49!(
    se a qualcuno puo' interessare ho risolto in questo modo:

    codice:
    Private Sub Sort_Desc(arr() As String)
        Dim i As Integer, c As Integer, t As Integer
        Dim DoAdd As Boolean
        Dim newArr() As String
        ReDim newArr(0)
        t = UBound(arr) + 1
        c = 0
        Do
            DoEvents
            DoAdd = True
            'controllo il numero selezionato con tutti i numeri nell'array
            For i = 0 To UBound(arr)
                'se il numero selezionato e' minore di un solo numero nell'array
                'lo "scarto" e passo al successivo (per poi riprenderlo dopo)
                If Int(arr(c)) < Int(arr(i)) Then
                    DoAdd = False
                    Exit For
                End If
            Next i
            If DoAdd = True Then
                'se il numero non e' stato scartato (quindi e' il maggiore)...
                ReDim Preserve newArr(UBound(newArr) + 1) 'ridimensiono nuovo array
                newArr(UBound(newArr)) = arr(c) 'aggiungo il numero nel nuovo array
                'cambio il numero selezionato in 0,
                'in modo che non sia piu maggiore a nessun numero nell'array originale
                arr(c) = 0
                'sottraggo 1 a t
                t = t - 1
            End If
            c = c + 1
            'se c e' oltre i limiti dell'array azzero l'indice di selezione
            If c = UBound(arr) + 1 Then c = 0
        'se t e' = a 0, vuoldire che sono stati controllati tutti i numeri e posso uscire dal ciclo
        Loop Until t = 0
        arr = newArr
    End Sub
    non l'ho commentato molto ma si dovrebbe capire

    ciao e grazie Oregon
    Ciao !

    Visto che sull'argomento "Sort" sono stati scritti centinaia di libri, mi permetto di suggerirti una piccola ricerca in rete, anziche' "reinventarti" tutto l'algoritmo....

    Il tuo e' "abbastanza" efficace (a parte il fatto che tralascia il primo elemento del vettore, assume arbitrariamente che inizi con l'elemento 0, ecc...), ma e' spaventosamente inefficiente !

    Prova a fare un sort di 1000 elementi e te ne accorgerai !

    Il piu' semplice algoritmo utilizzato BubbleSort, e' 10 volte piu' corto come codice e almeno 200 volte piu' veloce...

    Dai un'occhiata qui: http://it.wikipedia.org/wiki/Bubble_sort ... c'e' anche il codice Basic !

    Ciao !
    IceCube_HT (VB6 fan Club)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.