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

    [C]contare occorrenze lettere in una stringa

    Salve a tutti

    Devo contare le occorrenze delle lettere in una frase. Ho pensato a questa soluzione :

    codice:
    int main(){
        char miastringa[100] = "baccanobaccanobaccano" ;
        int i,a,b,c;
    
    i=0;
    a=0;
    b=0;
    c=0;
    
    for (i=0;i<22;i++){
                          if (miastringa[i]== 'a') a++;
                          if (miastringa[i] == 'b') b++;
                          if (miastringa[i] == 'c') c++;
                           
                          //cosi per tutte le lettere dell'alfabeto
        
                          }
    
    printf("%d \n", a);    
    printf("%d \n", b);  
    printf("%d \n", c);
    
    }

    Mi pare ua soluzione un po rozza, e volevo saperese ne avete in mente di mogliori.

  2. #2
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    un semplice arrangiamento è creare un vettore di 26 interi che contiene i contatori, uno per ogni lettera.


    A questo punto utilizzi il codice ASCII della lettera per trovare l'indice giusto.
    codice:
    int contatori[26];
    
    for (i=0;i<22;i++)
    {
       contatori[ miastringa[i] - 97 ]++;  //97 è il carattere 'a' in ASCII
    }
    P.s. magari fai una memset a 0 sul vettore.

  3. #3
    Utente di HTML.it L'avatar di ybla82
    Registrato dal
    Jan 2009
    Messaggi
    92
    un semplice arrangiamento è creare un vettore di 26 interi che contiene i contatori, uno per ogni lettera.


    A questo punto utilizzi il codice ASCII della lettera per trovare l'indice giusto.
    codice:
    int contatori[26];
    
    for (i=0;i<22;i++)
    {
       contatori[ miastringa[i] - 97 ]++;  //97 è il carattere 'a' in ASCII
    }
    P.s. magari fai una memset a 0 sul vettore.

  4. #4
    Ottima idea, grazie!

    Piccolo arrangiamento, ma grande risultato :-)

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.