This is a program for converting Roman numerals to their decimal equivalents. There must be a better way of distinguishing between, for example, 'IV' and 'VI', than what I have currently written.
#include <iostream>
#include <string>
using namespace std;
class romanType{
public:
romanType();
romanType(string s);
~romanType();
void setRoman(string); //Set the Roman numeral from user entries.
int romanToDecimal(); //Convert the Roman numeral(string) to Decimal value.
void printDecimal(); //Display the decimal value.
void printRoman(); //Display the Roman numeral value.
private:
string romanNum;
int decimalNum = 0;
};
romanType::romanType()
{
romanNum = 1;
}
romanType::~romanType()
{
}
void romanType::setRoman(string troll)
{
romanNum = troll;
}
int romanType::romanToDecimal()
{
for (int i = 0; i < romanNum.length(); i++)
{
if (romanNum[i] == 'I')
decimalNum++;
if (romanNum[i] == 'V')
{
if (i > 0 && romanNum[i - 1] == 'I')
decimalNum -= 2;
decimalNum += 5;
}
if (romanNum[i] == 'X')
{
if (i > 0 && romanNum[i - 1] == 'I')
decimalNum -= 2;
decimalNum += 10;
}
if (romanNum[i] == 'L')
{
if (i > 0 && romanNum[i - 1] == 'X')
decimalNum -= 20;
decimalNum += 50;
}
}
cout << decimalNum << endl;
return decimalNum;
}
int main()
{
string numerals;
do{
cout << "Enter roman numerals: ";
cin >> numerals;
romanType Rom;
Rom.setRoman(numerals);
Rom.romanToDecimal();
} while (true);
system("PAUSE");
}
Sample output:
Enter roman numerals: IX 9 Enter roman numerals: XI 11 Enter roman numerals: XIX 19 Enter roman numerals: XX 20 Enter roman numerals: LVIII 58 Enter roman numerals: LXXXVIII 88 Enter roman numerals: LXVI 66 Enter roman numerals: LXIV 64 Enter roman numerals: