Advertisement
u53r

Occorrenze lettere in una parola

Dec 18th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. /*
  2.   * In una parola, contare quante volte compare ogni lettera che la compone
  3.   * Es. CASA --> A = 2, C=1, S = 1
  4. */
  5. #include <stdio.h>
  6. #include <string.h>
  7.  
  8. int main() {
  9.   char s[30],c; // s = stringa in input, c = contatore di per stampare l'alfabeto
  10.   int tmp,i,j,cr[26]; // tmp = variabile temporanea per il casting, i,j = contatori del for , cr = array per accumulatori caratteri
  11.   for (i = 0; i < 25; i++) { // Inizializzo tutto il vettore a 0
  12.     cr[i] = 0;
  13.   }
  14.   printf("Inserisci la tua stringa >> ");
  15.   fgets(s,30,stdin); // Evito che vengano inseriti più caratteri di quanti la stringa sia in grado di contenere
  16.   for (i = 0; i < strlen(s); i++) { // Eseguo tutti i controlli successivi per ogni carattere della stringa
  17.     for (j = 97; j <= 122; j++) { // Controllo quale lettera contiene il carattere corrente (a = 97..z = 122)
  18.       tmp = (int)s[i]; // Ottengo il codice decimale ASCII del carattere corrente utilizzando un casting a intero
  19.       if(tmp == j){ // Se il codice ottenuto è uguale al valore corrente di j
  20.         cr[j-97]++; /* Incremento il contatore del carattere corrente di 1 .
  21.         N.B. : per indicare l'indice dell'array di contatori uso la forma j-97, poiché ogni valore di j è aumentato di 97 rispetto
  22.         al valore dell'indice del contatore della lettera corrispondente
  23.         ES.
  24.         a:
  25.          j=97 && cr[0]
  26.          0 = j-97 --> cr[j-97]
  27.         */
  28.       }
  29.     }
  30.   }
  31.   for (c = 'A',i=0; c <='Z' && i<26; c++,i++) {
  32.     if (cr[i] != 0) { // Stampo solo le lettere comparse almeno una volta
  33.       printf("%c = %d\n", c,cr[i]);
  34.     }
  35.   }
  36.   return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement