Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Split & array [VB6]

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    Split & array [VB6]

    Ciao a tutti.
    Ho una variabile stringa di questo tipo:
    1,4,3,6,4,2,3 ecc ecc, ovvero una serie di numeri separati da virgole.
    Tenuto conto che questa variabile č composta da un numero imprecisato di numeri (potrebbe anche essere composta da un solo numero) come faccio a sapere:
    1)la loro somma
    2)da quanti numeri č composta la mia variabile

    Devo usare la funzione Split e un array all'interno di un ciclo?
    Qualcuno potrebbe farmi un esempio?

    Grazie fin d'ora
    Ciao
    Luca
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  2. #2
    In effetti sei sulla buona strada. L'esempio che riporto funziona anche nel caso nella tua stringa non abbia nessun elemento o nel caso la tua stringa contenga sia elementi numerici che alfanumerici:

    Dim miaStringa As String
    Dim vettore As Variant
    Dim i As Integer, Somma As Long, Quanti As Integer

    miaStringa = "1,4,3,A,C,6,4,2,3"
    vettore = Split(miaStringa, ",")

    Somma = 0
    Quanti = 0
    For i = LBound(vettore) To UBound(vettore)
    If IsNumeric(vettore(i)) Then
    Somma = Somma + vettore(i)
    Quanti = Quanti + 1
    End If
    Next

    lblTotale.Caption = CStr(Somma)
    lblQuantinumeri.Caption = CStr(Quanti)
    lblquantielementi.Caption = CStr(UBound(vettore) + 1)

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154
    Perfetto Grazie!!!!
    Ciao
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    L'appetito vien mangiando......

    Approfitto.
    Se di una sequenza del tipo 1,2,4,1,4,2,2,1,2 ecc
    volessi sapere quanti "1" ci sono, quanti "2" ecc ecc?
    Tieni conto che le sequenze sono formate o da 1 o da 2 o da 3 o da 4
    Ciao
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    Vi ho....

    ....messo in crisi?
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    Ho risolto.....

    ......(era evidente ma ci ho messo un po')

    Dim miaStringa As String
    Dim vettore As Variant
    Dim i As Integer, Somma As Long, Quanti As Integer, Quantiuno As Integer

    miaStringa = "1,4,3,1,1,6,4,2,3,1"
    vettore = Split(miaStringa, ",")

    Somma = 0
    Quanti = 0
    Quantiuno = 0
    For i = LBound(vettore) To UBound(vettore)
    If IsNumeric(vettore(i)) Then
    Somma = Somma + vettore(i)
    Quanti = Quanti + 1
    If vettore(i) = 1 Then //o = 2 o = 3 ecc
    Quantiuno = Quantiuno + 1
    End If

    End If
    Next

    //Risultato:
    //Somma = 26
    //Quanti = 10
    //Quantiuno = 4

    Ciao
    Grazie
    Luca
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  7. #7
    Per rendere pių flessibile il codice, potresti creare un'array dove l'indice dell'elemento corrisponde al numero da conteggiare, ossia
    Quanti(1) conterrā il numero di uni, Quanti(2) il numero di dui, etc.
    Cosė nel ciclo for puoi sommare

    Quanti(vettore(i)) = Quanti(vettore(i)) + 1


    Non ho provato, ma direi che funziona

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    Sempre pių.....

    ...interessante....
    ...ma io e gli array.....non ci becchiamo.
    Se hai voglia e tempo mi faresti vedere cosa intendi?
    Ciao!!
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

  9. #9
    Intendo quello che ho scritto, ossia aggiungi al codice inziale la dichiarazione
    Dim QuantiNumeri(99) as integer

    modifica il ciclo for cosė:

    codice:
    For i = LBound(vettore) To UBound(vettore) 
       If IsNumeric(vettore(i)) Then 
          Somma = Somma + vettore(i) 
          Quanti = Quanti + 1 
          QuantiNumeri(vettore(i)) = QuantiNumeri(vettore(i)) + 1 
        End If 
    Next
    
    Ora puoi fare:
    
    for i = Lbound(QuantiNumeri) to Ubound(QuantiNumeri)
        MsgBox "Ci sono " & cstr(QuantiNumeri(i)) & " numeri " & cstr(i)
    next
    Non ho scritto il codice in VB ma direttamente nel corpo del msg, quindi potrebbero esserci errori di sintassi. Sistema quelli, ma la logica č questa. Un'ulteriore affinamento sarebbe di avere l'array QuantiNumeri di dimensioni variabili, a seconda di quelle che mi servono; ma questa č la versione 2.0 che un pigro come me svilupperā solo sotto tortura (o se obbligato dal mio capo...)

    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    154

    Fantastico...

    ..Ciao
    Grazie
    ...Spesso "chi sā" č chi ha l'umiltā di domandare e il coraggio di dare risposte... Luca
    webmaster@resruote.com

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 © 2025 vBulletin Solutions, Inc. All rights reserved.