/* File: duecifre.c */
/* Time-stamp: "2002-04-17 15:33:02 calvanes" */
/* Scopo: uso di if annidati e switch */

/* Input : numero intero di al piu` 2 cfre
   Output: pari pari        -->   cifra cifra
           dispari dispari  -->   lettere lettere
           pari dispari     -->   lettere cifra
           dispari pari     -->   cifra lettera
   N.B.: zero e` pari
*/

#include <stdio.h>

int leggi2Cifre(void);            /* legge un numero di 2 cifre */

void scriviInLettere(int cifra);  /* scrive una cifra in lettere */


int main(void)
{
  int num = -1;           /* numero di due cifre letto da tastiera */
  int c0, c1;             /* cifre del numero letto */
  int dispari0, dispari1; /* booleani: indicano se ciascuna cifra e` dispari
                             0 ... cifra e` pari
                             1 ... cifra e` dispari */

  num = leggi2Cifre();
  c0 = num % 10;
  c1 = num / 10;
  dispari0 = c0 % 2;
  dispari1 = c1 % 2;

  if (!dispari0 && !dispari1)              /* entrambe le cifre sono pari    */
    printf ("due cifre PARI ..... %d %d", c1, c0);
  else {
    if (dispari0 && dispari1) {            /* entrambe le cifre sono dispari */
      printf("due cifre DISPARI .....  ");
      scriviInLettere(c1);
      scriviInLettere(c0);
    }
    else {                                 /* una cifra pari ed una dispari  */
      printf("una cifra PARI ed una DISPARI .....  ");
      if (dispari1) {
        printf("%d  ", c1);
        scriviInLettere(c0);
      }
      else {
        scriviInLettere(c1);
        printf("  %d", c0);
      }
    }
  }
  printf("\n");

  return 0;
}


void scriviInLettere(int cifra)
  /* Scrive una cifra in lettere. */
{
  switch (cifra) {
  case 0: printf("zero"); break;
  case 1: printf("uno"); break;
  case 2: printf("due"); break;
  case 3: printf("tre"); break;
  case 4: printf("quattro"); break;
  case 5: printf("cinque"); break;
  case 6: printf("sei"); break;
  case 7: printf("sette"); break;
  case 8: printf("otto"); break;
  case 9: printf("nove"); break;
  default: printf("errore"); break;
  }
}


int leggi2Cifre(void)
  /* Legge un numero di 2 cifre. */
{
  int numero;

  do {
    printf("INSERISCI UN NUMERO DI UNA O DUE CIFRE...\n"
           "...ATTENZIONE: loop infinito immettendo una lettera!!"
           "   [CTRL+PAUSA per finire]\n");
    scanf("%d", &numero);
  } while (numero < 0 || numero >= 100);
  return numero;
}