/* File:  romani2.c */
/* Time-stamp: "2001-03-21 18:43:32 calvanes" */
/* Scopo: semplice esempio uso di funzioni */

/* Legge da tastiera una sequenza di caratteri fra 'I','V','X','L','C','D','M'
   (che rappresenta un numero romano) terminata da '\n', e stampa il numero
   intero corrispondente.
   Assume che le cifre romane compaiano SOLO in ordine decrescente (come ad
   esempio in MMCLXXI) ma non ammette che vi sia una sottosequenza crescente
   (come ad esempio la sottosequenza CM in MCMX).
*/

#include <stdio.h>


int Romano2Intero(char ch)
{
  int ris;

  switch (ch) {
  case 'I': ris = 1;    break;
  case 'V': ris = 5;    break;
  case 'X': ris = 10;   break;
  case 'L': ris = 50;   break;
  case 'C': ris = 100;  break;
  case 'D': ris = 500;  break;
  case 'M': ris = 1000; break;
  default: ris = -1;
  }

  return ris;
}


int main(void)
{
  char ch;
  int somma = 0;
  printf("Inserisci un numero romano (senza spazi) terminato da '\\n'\n");
  printf("Le cifre (M,D,C,L,X,V,I) devono comparire in ordine decrescente!\n");
  scanf("%c", &ch);
  while (ch != '\n') {
    somma = somma + Romano2Intero(ch);
    scanf("%c", &ch);
  }
  printf("Numero corrispondente: %d\n", somma);

  return 0;
}