/*
 * lat2dec.c
 * This program reads an "alphabetic number" (in base-26), converts it 
 * to a numerical value and prints it as a decimal number.
 */

#include <stdio.h>

int main ()
{
   
  const int     base = 26;      /* Our alphabetic base has 26 "digits": 
                                   {A, B, ... , Z}. */
  int           c;              /* The current "digit" (character). */
  unsigned int  n = 0;          /* The current numerical value. */

  printf ("Please enter an alphabetic number: ");

  /* Read characters until reaching the end of the line. */
  while ((c = getchar()) != '\n')
  {
    /* Make sure that the character represents an alphabetic "digit". */
    if (! (c >= 'A' && c <= 'Z'))
    {
      /* Print an error message and exit. */
      printf ("\n Illegal digit: %c -- Aborting.\n", c);
      return (1);
    }

    /* The digit c is in the range 'A' -- 'Z', so 0 <= (c - 'A') <= 25.
     * We multiply the current value by the base, and add to it (c - 'A'). */
    n = n*base + (c - 'A');
  }
  
  /* Print the result. */
  printf ("The decimal value is %d.\n", n);

  return (0);
}




