Could someone please point our the error(s) in the given code. It was down voted on StackOverflow without any explanation, but it seems to be working fine for me:
int value(char roman)
{
switch(roman)
{
case 'I':return 1;
case 'V':return 5;
case 'X':return 10;
case 'L':return 50;
case 'C':return 100;
case 'D':return 500;
case 'M':return 1000;
}
}
int getdec(const string& input)
{
int sum=0; char prev='%';
for(int i=(input.length()-1); i>=0; i--)
{
if(value(input[i])<sum && (input[i]!=prev))
{ sum -= value(input[i]);
prev = input[i];
}
else
{
sum += value(input[i]);
prev = input[i];
}
}
return sum;
}
This was the output received from the code:
I = 1 II = 2 III = 3 IV = 4 V = 5 VI = 6 VII = 7 VIII = 8 IX = 9 X = 10 XI = 11 XII = 12 XIII = 13 XIV = 14 XV = 15 XVI = 16 XVII = 17 XVIII = 18 XIX = 19 XX = 20 XXI = 21 XXII = 22 XXIII = 23 XXIV = 24 XXV = 25 XXVI = 26 XXVII = 27 XXVIII = 28 XXIX = 29 XXX = 30 XXXI = 31 XXXII = 32 XXXIII = 33 XXXIV = 34 XXXV = 35 XXXVI = 36 XXXVII = 37 XXXVIII = 38 XXXIX = 39 XL = 40 MMMMCMXCIX = 4999 CM = 900 XC = 90
Thanks in advance.