Versione del programma con scanf() e while
#include <stdio.h>
int main()
{
// In totale i caratteri inclusi nelle tabelle ASCII e ASCII estesa sono 256
// l'array caratteri è utilizzato per contare le occorrenze di ciascun carattere
int caratteri[256], i;
char c;
//azzero l'array caratteri prima di avviare il conteggio
for (i=0; i<256; i++)
caratteri[i]=0;
printf("Inserire un testo libero terminato con <INVIO>:\n");
while(1) {
scanf("%c", &c);
// il carattere c è utilizzatpo come indice nell'array caratteri
// l'operatore di cast (int) non è obbligatorio e serve perché l'indice dovrebbe essere di tipo int
caratteri[(int)c]++;
// se è letto il carattere <INVIO> esci dal ciclo
if (c == '\n')
break;
}
// stampa delle lettere minuscole e delle relative occorrenze
for (i='a'; i<='z'; i++)
printf("Lettera %c: %d\n", i, caratteri[i]);
return 0;
}
Versione del programma con getchar() e do/while
#include <stdio.h>
int main()
{
// In totale i caratteri inclusi nelle tabelle ASCII e ASCII estesa sono 256
// l'array caratteri è utilizzato per contare le occorrenze di ciascun carattere
int caratteri[256], i;
char c;
//azzero l'array caratteri prima di avviare il conteggio
for (i=0; i<256; i++)
caratteri[i]=0;
printf("Inserire un testo libero terminato con <INVIO>:\n");
do {
c=getchar();
// il carattere c è utilizzato come indice nell'array caratteri
// l'operatore di cast (int) è utilizzato perché l'indice dovrebbe essere di tipo int
caratteri[(int)c]++;
} while (c!='\n');
// stampa delle lettere minuscole e delle relative occorrenze
for (i='a'; i<='z'; i++)
printf("Lettera %c: %d\n", i, caratteri[i]);
return 0;
}
Torna agli esercizi: Esercizi