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