Accedi

Consonanti e vocali

PROBLEMA

Scrivere un programma che letta da tastiera una stringa di caratteri restituisce a viedo il numero di consonanti ed il numero di vocali presenti nella stringa.


CODICE SORGENTE

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CARATTERI 10000+1
#define NUMERO_LETTERE

void banner_menu();
void banner_menu(int conferma){
 system("cls");
 printf("1. Inserisci la frase ");
 if (conferma==1)
  printf("[Inserita]\n");
 else
  printf("[Mancanete]\n");
 printf("2. Visualizza le lettere della frase\n");
 printf("3. Esci\n");
}
int main(int argc, char *argv[]){
 //sezione dichiarativa
 char frase[CARATTERI];
 char consonanti[]={'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z', '\0'};
 char vocali[]={'a', 'e', 'i', 'o', 'u', '\0'};
 int numero_consonanti=0, numero_vocali=0, caratteri_speciali=0, scelta, conferma=0, i;
 //inizio menu 
 do{
  banner_menu(conferma);
  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':
       numero_vocali++;
       break;
      case 'b': case 'B':
       numero_consonanti++;
       break;
      case 'c': case 'C':
       numero_consonanti++;
       break;
      case 'd': case 'D':
       numero_consonanti++;
       break;
      case 'e': case 'E':
       numero_vocali++;
       break;
      case 'f': case 'F':
       numero_consonanti++;
       break;
      case 'g': case 'G':
       numero_consonanti++;
       break;
      case 'h': case 'H':
       numero_consonanti++;
       break;
      case 'i': case 'I':
       numero_vocali++;
       break;
      case 'j': case 'J':
       numero_consonanti++;
       break;
      case 'k': case 'K':
       numero_consonanti++;
       break;
      case 'l': case 'L':
       numero_consonanti++;
       break;
      case 'm': case 'M':
       numero_consonanti++;
       break;
      case 'n': case 'N':
       numero_consonanti++;
       break;
      case 'o': case 'O':
       numero_vocali++;
       break;
      case 'p': case 'P':
       numero_consonanti++;
       break;
      case 'q': case 'Q':
       numero_consonanti++;
       break;
      case 'r': case 'R':
       numero_consonanti++;
       break;
      case 's': case 'S':
       numero_consonanti++;
       break;
      case 't': case 'T':
       numero_consonanti++;
       break;
      case 'u': case 'U':
       numero_vocali++;
       break;
      case 'v': case 'V':
       numero_consonanti++;
       break;
      case 'w': case 'W':
       numero_consonanti++;
       break;
      case 'x': case 'X':
       numero_consonanti++;
       break;
      case 'y': case 'Y':
       numero_consonanti++;
       break;
      case 'z': case 'Z':
       numero_consonanti++;
       break;
      default:
       caratteri_speciali++;
     }  
    }
    break;
   case '2': //visulizza risultati
    system("cls");
    if(conferma==1){ //se ? presente una frase
     printf("Consonanti:\t\t%i\n", numero_consonanti);
     printf("Vocali:\t\t\t%i\n", numero_vocali);
     printf("Caratteri speciali:\t%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(conferma);
      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;
}