Home   Informatica   C   1.7 - Struttura switch - case

1.7 - Struttura switch - case

Scritto da sergio il 29/08/2022 12:31:12

Ci sono casi dove la scelta che può effettuare il programma si sviluppa in casistiche ben definite, in questo caso invece di annidare sequele di "if ... else ... " è più comodo e chiaro utilizzare una struttura composta dalle parole chiave "switch" e "case".

Nell'esempio qui sotto, vengono accettati degli input da tastiera e conteggiati i totali delle tipologie di input. La parola chiave "default" funge da "else", cioè prevedere l'elaborazione nel caso il nostro input non faccia scopa con nessuno dei "case" previsti.

Code:

/* Contare i tipi di giudizio degli studenti */
#include <stdio.h>

main()
{
      int giudizio;
      int ottimoCount = 0, distintoCount = 0, buonoCount = 0,
          sufficienteCount = 0, insufficienteCount = 0;
          
      printf("Inserisci il giudizio: \n");
      printf("Digita il carattere di EOF per terminare.\n");
      
      while ((giudizio = getchar()) != EOF)
      {
            switch (giudizio)
            {
                   case 'OTTIMO': case 'ottimo':
                        ++ottimoCount;
                        break;
                   
                   case 'DISTINTO': case 'distinto':
                        ++distintoCount;
                        break;
                        
                   case 'BUONO': case 'buono':
                        ++buonoCount;
                        break;
                        
                   case 'SUFFICIENTE': case 'sufficiente':
                        ++sufficienteCount;
                        break;
                        
                   case 'INSUFFICIENTE': case 'insufficiente':
                        ++insufficienteCount;
                        break;
                        
                   case '\n': case ' ':
                        break;
                        
                   default:
                        printf("Giudizio non corretto.");
                        printf(" Inserisci un nuovo giudizio.\n");
                        break;
            }
      }
      
      printf("\n I totali per ogni giudizio sono:\n");
      printf("OTTIMO: %d\n", ottimoCount);
      printf("DISTINTO: %d\n", distintoCount);
      printf("BUONO: %d\n", buonoCount);
      printf("SUFFICIENTE: %d\n", sufficienteCount);
      printf("INSUFFICIENTE: %d\n", insufficienteCount);
      
      return 0;            
}

Ultimo aggiornamento 09/09/2022 12:25:14