Lettere dell'alfabeto
PROBLEMA
Scrivere un programma che letta da tastiera una stringa di caratteri per ognuna delle lettere dell'alfabeto stampa a video il numero delle volte che la lettera compare nella stringa
CODICE SORGENTE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CARATTERI 10000+1
#define NUMERO_LETTERE 26+1
void banner_menu();
void banner_menu(void){
system("cls");
printf("1. Inserisci la frase\n");
printf("2. Visualizza le lettere della frase\n");
printf("3. Esci\n");
}
int main(int argc, char *argv[]){
//sezione dichiarativa
char lettera_simbolo[NUMERO_LETTERE]={'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '\0'}; //array con il simbolo della lettera
int lettera[NUMERO_LETTERE]={0}; //array per il nuvero di volte che compaiono le lettere
int i, conferma=0, caratteri_speciali=0; //i=indice; conferma=per verificare che una frase è stata inserita; caratteri_speciali=mantiene il conteggio di essi
char frase[CARATTERI]; //contiene la frase inserita
char scelta; //scelta del menu
//inizio menu
do{
banner_menu();
printf(">");
scelta=getch();
switch (scelta){
case '1': //Inserimento frase
system("cls");
printf("Inserisci la frase\n>");
gets(frase);
conferma=1;
for (i=0;i<strlen(frase);i++){ //controlla delle lettere
switch (frase[i]){
case 'a': case 'A':
lettera[1-1]++;
break;
case 'b': case 'B':
lettera[2-1]++;
break;
case 'c': case 'C':
lettera[3-1]++;
break;
case 'd': case 'D':
lettera[4-1]++;
break;
case 'e': case 'E':
lettera[5-1]++;
break;
case 'f': case 'F':
lettera[6-1]++;
break;
case 'g': case 'G':
lettera[7-1]++;
break;
case 'h': case 'H':
lettera[8-1]++;
break;
case 'i': case 'I':
lettera[9-1]++;
break;
case 'j': case 'J':
lettera[10-1]++;
break;
case 'k': case 'K':
lettera[11-1]++;
break;
case 'l': case 'L':
lettera[12-1]++;
break;
case 'm': case 'M':
lettera[13-1]++;
break;
case 'n': case 'N':
lettera[14-1]++;
break;
case 'o': case 'O':
lettera[15-1]++;
break;
case 'p': case 'P':
lettera[16-1]++;
break;
case 'q': case 'Q':
lettera[17-1]++;
break;
case 'r': case 'R':
lettera[18-1]++;
break;
case 's': case 'S':
lettera[19-1]++;
break;
case 't': case 'T':
lettera[20-1]++;
break;
case 'u': case 'U':
lettera[21-1]++;
break;
case 'v': case 'V':
lettera[22-1]++;
break;
case 'w': case 'W':
lettera[23-1]++;
break;
case 'x': case 'X':
lettera[24-1]++;
break;
case 'y': case 'Y':
lettera[25-1]++;
break;
case 'z': case 'Z':
lettera[26-1]++;
break;
default:
caratteri_speciali++;
}
}
break;
case '2': //visulizza risultati
system("cls");
if(conferma==1){ //se è presente una frase
printf("Lettera\t\tPresente\n");
for (i=0;i<NUMERO_LETTERE-1;i++){
printf(" %c\t\t %i\n", lettera_simbolo[i], lettera[i]);
}
printf("Caratteri speciali: %i\n", caratteri_speciali);
printf("Premi un tasto per tornare al menu . . .\n>");
getch();
}
else{ //se non è presente una frase
for (i=5;i>0;i--){
system("cls");
banner_menu();
printf(">Devi inserire una frase attendi [%i]", i);
sleep(1);
}
}
break;
case '3': //chiusura programma
system("cls");
for (i=0;i<5;i++){
printf("Grazie di aver utilizzato il programma\n");
sleep(1);
}
break;
default: //per altri valori
scelta=1;
}
}while(scelta!='3');
return 0;
}