Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that converts a number entered in Roman numerals to a decimal. Y

ID: 3563641 • Letter: W

Question

Write a program that converts a number entered in Roman numerals to a decimal. Your program should consist of a class, say, romanType. An object of type romanType should do the following: a. Store the number as a Roman numeral. b. Convert and store the number into decimal form. c. Print the number as a Roman numeral or decimal number as requested by the user. The decimal values of the Roman numerals are: M 1000 D 500 C 100 L 50 X 10 V 5 I 1

Test your program using the following Roman numerals: MCXIV, CCCLIX, MDCLXVI.

Explanation / Answer

// Roman Numerals To Decimal.cpp : Defines the entry point for the console application.
//

#include "stdafx.h" // Used because I compile with MS Visual C++ 2008, and this is needed for it
#include <iostream>
#include <string>

using namespace std;

struct RomanNumber
{
public:
   string get()
   {
       return romanNumber;
   }

   void show()
   {
       cout << "Roman Number is " << romanNumber << endl;
   }

   RomanNumber(const string &input)
   {
       romanNumber = input;
   }

   int convert()
   {
       int length = romanNumber.length();
       int previous = 0;
       bool error = false;
       int nIndex = 0;

       sum = 0;

       while( (error == false) && (nIndex < length) )
       {
           switch(romanNumber[nIndex])
           {
           case 'M':
               sum += 1000;
               if(previous < 1000)
               {
                   sum -= 2 * previous;
               }
               previous = 1000;
               break;
           case 'D':
               sum += 500;
               if(previous < 500)
               {
                   sum -= 2 * previous;
               }
               previous = 500;
               break;
           case 'C':
               sum += 100;
               if(previous < 100)
               {
                   sum -= 2 * previous;
               }
               previous = 100;
               break;
           case 'L':
               sum += 50;
               if(previous < 50)
               {
                   sum -= 2 * previous;
               }
               previous = 50;
               break;
           case 'X':
               sum += 10;
               if(previous < 10)
               {
                   sum -= 2 * previous;
               }
               previous = 10;
               break;
           case 'V':
               sum += 5;
               if(previous < 5)
               {
                   sum -= 2 * previous;
               }
               previous = 5;
               break;
           case 'I':
               sum += 1;
               if(previous < 1)
               {
                   sum -= 2 * previous;
               }
               previous = 1;
               break;
           default:
               cout << romanNumber[nIndex] << " is not a Roman Numeral!" << endl;
               error = true;
               sum = 0;
           } // switch

           nIndex++;

       } // while
       return sum;
   }

   int length()
   {
       return romanNumber.length();
   }

private:
   string romanNumber;
   int sum;      
};

int main()
{
   string myInput;
   int value;
   cout << "Please enter the Roman Numeral to convert : ";
   cin >> myInput;
   RomanNumber myRomanNumber(myInput);
   value = myRomanNumber.convert();
  
   cout << "Roman Number " << myInput << " equals " << value <<endl;
  
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote