Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2018
    Messaggi
    11

    [VB.NET] Esercizio su stringhe per conteggio occorrenze

    Ciao ho scritto una stringa come input, e voglio sapere il numero delle ricorrenze, il programma che sono riuscito a fare mi dava le ricorrenze, ma purtroppo se ci sono più lettere uguali, il programma si svolge ma con degli errori.
    esp: errore
    ABBCCC
    A=1
    B=2
    B=1
    C=3
    C=2
    C=1
    in realtà ciò che vorrei è :
    ABBCCC
    A=1
    B=2
    C=3
    So che sbaglio nel output, vorrei dei suggerimenti che mi portino da solo alla soluzione. Questo è il mio codice.
    c
    codice:
         Dim parola, Lettera, max, car As String        Dim i, ss, c, lunghezza As Integer
    
    
            parola = TextBox1.Text
            lunghezza = Len(parola)
            Label1.Text = ""
            Label2.Text = ""
            For i = 1 To lunghezza
                car = Mid(parola, i, 1)
                ss = 0
    
    
                Lettera = car
                For c = i To lunghezza
                    max = Mid(parola, c, 1)
                    If Lettera = max Then
                        ss = ss + 1
                    End If
                Next
             
                    Label1.Text = Label1.Text & vbCrLf & Lettera & "= " & ss
    
            Next



    Ultima modifica di Xatar; 25-05-2018 a 03:51

  2. #2
    istanzia un array di 26 posizioni e incrementa di uno la posizione relativa al valore ASCII della singola lettera. poi stampa quelli >0

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2018
    Messaggi
    11
    Ci ero arrivato anch'io 'Optime.
    Ma non sapevo come fare il ciclo, un ciclo da quello che so, è solo numerico, il contatore deve essere un numero, e non so associare un numero a una lettera.
    Ho fatto il primo ciclo for
    codice:
        For r = 1 To 10
     array(i) = ("a,b,c,d,e,f,g")
                Label2.Text = array(r)
            Next
    2 ciclo
    codice:
    for i= a to z 
    array(r)= r
    Ma è sbagliatissimo.
    3 ciclo
    codice:
         For r = 1 To 10
                array(r) = ("a,b,c,d,e,f,g")
        
            Next
    Ho cercato nei vari forum ma non ho trovato nulla.

  4. #4
    con string.asc() https://msdn.microsoft.com/it-it/lib...code-snippet-1 ricavi il codice ASCII del carattere; visto che il codice ascii di A è 65, se togli 65 al valore ricavato trovi la posizione nell'array il resto è in discesa

  5. #5
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    mi sembra più semplice così (se hai già studiato la funzione split)
    codice:
            Dim parola As String, Lettera As Char, c As Integer
            parola = "abcddabddccee"
            Dim Arr() = {"a", "b", "c", "d", "e", "f", "g"}
            For Each Lettera In Arr
                c = parola.Split(Lettera).Length - 1
                MessageBox.Show(Lettera + " " + c.ToString)
            Next
    comunque impara a cercare scrivendo in inglese, per esempio "vb.net char occurrences in string"
    trovi molte soluzioni
    Ultima modifica di patel; 26-05-2018 a 10:30

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    se non ho capito male, vuoi contare quante occorrenze ci sono di ogni lettera in una stringa, e stamparne poi il numero per ogni lettera giusto?
    e visto che vuoi suggerimenti e non codice (giusto!) io scorrerei la stringa direttamente (visto che una string è un array di char, la scorri direttamente) e ti salvi in un dictionary la chiave (lettera cercata) ed il valore (numero di occorrenze), quando ha finito stampi tutte le coppie chiave/valore trovate

    dovresti solo fare attenzione che dentro al ciclo potresti (anzi sicuramente) cercare di aggiungere una chiave già presente, quindi devi controllare che la chiave non sia presente nel dictionary, se non c'è la crei, se c'è ne aggiorni il valore
    Riccardo Sadocchi
    Microsoft MCP C#

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.