Spostare numeri doppi

di il
11 risposte

Spostare numeri doppi

Ho la necessità per (uso personale di statistica)di spostare da una listbox dei numeri doppi e trasferirli su di un altra listbox.
Allego immagine per comprendere meglio.
numeri.JPG
numeri.JPG

come si vede dalla colonna di sinistra c'è il 18 e nella colonna diacente il 65 mentre se scorriamo verso il basso e guardando come sopra vediamo che sulla colonna di destra vi sono dei numeri ripetuti,quindi,dovrei togliere i numeri doppi sulla destra e trasferirli ad altra listbox.
Ho fatto diversi tentativi ma non ottengo il risultato sperato,non posto il codice in quanto non funzionante,quindi,chiedevo se esiste una funzione specifica che faccia quello che chiedo e poi lo elaboro,naturalmente questa NON è una richiesta di codice in quanto il codice me lo scrivo come da diversi anni a questa parte.
Grazie a chi mi potrà indicare la strada.

11 Risposte

  • Re: Spostare numeri doppi

    Problema risolto.
    Facendo una ricerca sul forum ho trovato la risposta che ha dato un utente indicando google come motore di ricerca fornendo un esempio.
    Posto il codice non scritto da me che ho adattato al mio scopo.
    
    Private Sub ListRemoveDups(ByVal Source As List(Of String), Optional ByVal MatchCase As Boolean = False)
            'Sort the array
            Source.Sort()
    
            'Do the duplicates remove.
            For x As Integer = Source.Count - 1 To 1 Step -1
                'Check if we want 
                If MatchCase Then
                    'Do the check
                    If Source(x).ToLower() = Source(x - 1).ToLower() Then
                        Source.RemoveAt(x)
                        indx += 1
                    End If
                Else
                    'Do the check
                    If Source(x) = Source(x - 1) Then
                        Source.RemoveAt(x)
                    End If
                End If
            Next x
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim names As New List(Of String)
            'Add some names
            names.Add("65")
            names.Add("68")
            names.Add("68")
            names.Add("70")
            names.Add("72")
            names.Add("72")
            names.Add("73")
            names.Add("73")
    
            'Match Case
            ListRemoveDups(names, True)
    
            'Display names
            MsgBox(indx)
            For x As Integer = 0 To names.Count - 1
                MessageBox.Show(names(x), "Demo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                'Return Ben,Chris,david
            Next x
        End Sub
    
    in questo modo rimane solo i numeri che non sono doppi.
    Quello che cercavo,ringrazio.
  • Re: Spostare numeri doppi

    Niente da fare...non ho risolto.
    è vero che elimina i doppioni ma è anche vero che il numero di cui si fà riferimento deve essere eliminato,in poche parole se io ho 65 ripetuto 2 volte non deve eliminare il doppione ma anche il numero 65,tanto per capirsi io ho
    65
    65
    con la funzione sopradescritta nel post precedente,mi elimina il 65 doppione ma vorrei che eliminasse anche il 65 originario in modo che il 65 scompaia.
  • Re: Spostare numeri doppi

    Puoi fare un esempio dei numeri presenti nelle liste all'inizio e alla fine dell'elaborazione?
  • Re: Spostare numeri doppi

    Dunque,questi sono i numeri in cui vi sono i doppioni,per comodità ho lasciato il codice originale così com'era
    cambiando da nomi a numeri,i numeri sono i seguenti:
    
    names.Add("65")
            names.Add("68")
            names.Add("68")
            names.Add("70")
            names.Add("72")
            names.Add("72")
            names.Add("73")
            names.Add("73")
      
    e questo il risultato dopo l'elaborazione
    numeri.JPG
    numeri.JPG

  • Re: Spostare numeri doppi

    Ma tu quale risultato ti aspetti al posto di quello mostrato?
  • Re: Spostare numeri doppi

    Mi aspetto che se io ho 2 volte 65 deve essere eliminato il 65 per 2volte e se ho il 73 per 3 volte deve essere elimanato il 73
    per quante volte è uscito,se il numero di uscite è 77 ed unico non succede niente...
    Piccolo esempio:
    estratti:
    65
    72
    72
    80
    80
    80
    66
    come si vede il 65 è unico,il 72 è doppione e deve essere eliminato o aggiunto da x parte e devono essere eliminati tutti e due(72,72),il numero 80 stesssa ripetizione(80,80,80)devono essere eliminati tutti e 3
    il 66 è unico.
  • Re: Spostare numeri doppi

    Invece di andare di copia/incolla a casaccio, RAGIONA, possibilmente con la TUA testa.

    Ti stai incartando su un problema SEMPLICE (ma NON BANALE), cercando soluzioni INUTILMENTE INCASINATE.

    Il problema da risolvere e':
    1) hai una dabella con 2 colonne
    2) la seconda colonna ha numeri duplicati
    3) vuoi rimuovere TUTTE LE RIGHE contenente nella seconda colonna un numero 'duplicato'

    SENZA alcuni concetti BASE di programnazione, non ne uscirai mai.

    a) ti serve CONTARE per OGNI numero presente nella SECONDA colonna, quante volte e' presente nella tabella originale. Quindi, la PRIMA COSA DA FARE e' CONTARE. Come si fa? Lo dovresti GIA' sapere. Se non lo sai fare, DEVI impararlo. La 'dritta' e': usi un 'dizionario'.
    b) per ottenere la tabellina che ti serve ci sono DUE soluzioni:
    b.1) dalla tabellina originale RIMUOVERE delle righe
    b.2) creare una NUOVA tabellina AGGIUNGENDO delle righe
    c) supponiamo che to scelga b.1)
    d) scandisci la tabellina originale e per ogni riga controlli quante volte il valore della seconda colonna e' presente, usando il conteggio fatto al punto a). SE e' > 1, cancelli la riga. Questa soluzione puo' essere complessa perche' l'operazione di cancellazione MODIFICA il contenuto della tabellina, e quindi devi decidere come passare alla riga successiva.

    SE speravi in qualche soluzione 'miracolosamente piu' semplice' rivolgiti a qualche Santo.

    Pero', a 'naso' direi che stai sbagliando qualcosa.
    Un problema non e' altro che fornire una risposta ad una domanda.
    Tu stai cercando di rispondere, in modo 'maldestro', alla domanda 'sbagliata'.
    PERCHE' vuoi rimuovere i numeri duplicati?
    FORSE non e' che ti serve sapere SEMPLICEMENTE quali sono i numeri usciti una volta sola?

    Ovviamente questo e' una cosa che sai solo tu
  • Re: Spostare numeri doppi

    Anche se non mi piace avere a che fare con il Lotto e roba simile, la questione può essere risolta con questo esempio
    
            Dim listaIn As New List(Of Integer)({65, 72, 72, 80, 80, 80, 66})
            Dim listaOut As New List(Of Integer)
    
            Dim g = listaIn.GroupBy(Function(i) i)
            For Each grp In g
                If (grp.Count > 1) Then
                    For n As Integer = 1 To grp.Count
                        listaIn.Remove(grp.Key)
                    Next
                    listaOut.Add(grp.Key)
                End If
            Next
    
    che ha in input la lista e produce in output una lista con i duplicati e modifica la lista di input in modo da lasciare solo gli unici
  • Re: Spostare numeri doppi

    @migliorabile....ascolta bellino,quando io facevo programmazione tu probabilmente non eri neanche nato,quindi,prima di dare del neofita che fà il copia ed incolla e che non ha le basi di programmazione,cerca di informarti prima chi sono e poi nè parliamo,ci siamo capiti sapientone ?? e comunque ho risolto da solo,la notte porta consiglio.
    @antonio,grazie lo stesso,ho risolto.
  • Re: Spostare numeri doppi

    Ma hai provato il codice che ti ho proposto?
  • Re: Spostare numeri doppi

    @SISTEMISTA, grazie del bellino, del consiglio, e del ""sapientone"".
    Effettivamente, come "sapientone" non mi ci trovo troppo male
    Meglio ancora come "Sapientone", con la "S" maiuscola

    E' altamente improbabile che, a quel tempo, non fossi gia' nato.
    E piu' probabile che stessi "pasticciano"" con i cluster del Cineca



    Nota che @oregon ti ha fornito ESATTAMENTE lo stesso consiglio, con il "plus" che ti ha fornito anche il codice
    Che potresti "copiare ed incollare"
Devi accedere o registrarti per scrivere nel forum
11 risposte