I am supposed to be creating a program that converts roman numbers to its decimal values. I have done something, but the math is wrong. When entering MCMLXXVIII, I am supposed to get 1978, and instead I get 2178. I am using substrings to solve this problem, but I am not getting anywhere. Can somebody please advise me on what to do?
#include<iomanip>
#include<iostream>
#include<string>
usingnamespace std;
int main(){
int M = 1000;
int D = 500;
int C = 100;
int L = 50;
int X = 10;
int V = 5;
int I = 1;
int num = 0;
cout << " Enter the Roman Numeral Value: ";
string roman;
cin >> roman;
string sub = roman.substr(0, 2);
cout << sub << endl;
for (int i = 0; i < roman.length(); i++)
{
switch (roman.at(i))
{
case'M':
case'm':
num += M;
break;
case'D':
case'd':
num += D;
break;
case'C':
case'c':
num += C;
break;
case'L':
case'l':
num += L;
break;
case'X':
case'x':
num += X;
break;
case'V':
case'v':
num += V;
break;
case'I':
case'i':
num += I;
break;
}
}
cout << num << endl;
}