/**********************************************************/
// R. A. Hillyard
// roman.cpp
// last modified: 09/17/2001
// This program reads in integers from 1 to 5000 from the user and 
// prints out their roman numeral equivalents. For example 1997
// becomes MDCCCCLXXXXVII. A sentinel of 0 is used to exit the program
//
// The algorithm for the conversion is as follows:
// (1)  While the decimal number is greater than or equal to 1000,
//      we print an "M" and reduce the number by 1000.
// (2)  If the number is still 500 or larger, we print a "D"
//      and reduce the number by 500
// (3), (4), ...We continue in a similar fashion to print all
//      appropriate C's, L's,  X's,  V's and I's.
/*********************************************************/

#include<iostream>

using namespace std;

int main()
  {
  cout << "This program converts decimal numbers from 1 to 5000 "
       << "to roman numerals.\nType in 0 to stop\n";

  do
    {
    int decimal;    //holds value entered by user

    cout << "\nNumber to convert? ";
    cin >> decimal;
    
    if(decimal == 0) break;    //user choice to exit loop
   
    if((decimal > 5000) || (decimal < 0))
      cout << "the number must be between 1 and 5000.\n";
    else
      {
      cout << decimal << " converts to ----> ";
      while(decimal >= 1000)
        {
        cout << "M";
        decimal -= 1000;
        }
      if(decimal >= 500)
        {
        cout << "D";
        decimal -= 500;
        }
      while(decimal >= 100)
        {
        cout << "C";
        decimal -= 100;
        }
      if(decimal >= 50)
        {
        cout << "L";
        decimal -= 50;
        }
      while(decimal >= 10)
        {
        cout << "X";
        decimal -= 10;
        }
      if(decimal >= 5)
        {
        cout << "V";
        decimal -= 5;
        }
      while(decimal >= 1)
        {
        cout << "I";
        decimal--;
        }
      cout << endl;
      }//end else
    }while(true);   
  return 0;
  }//end main

/********************Program Output******************
This program converts decimal numbers from 1 to 5000 to roman numerals.
Type in 0 to stop

Number to convert? 1997
1997 converts to ----> MDCCCCLXXXXVII

Number to convert? 50054
the number must be between 1 and 5000.

Number to convert? 5000
5000 converts to ----> MMMMM

Number to convert? 4995
4995 converts to ----> MMMMDCCCCLXXXXV

Number to convert? 25
25 converts to ----> XXV

Number to convert? 49
49 converts to ----> XXXXVIIII

Number to convert? 0
*/