Interview Questions

Roman numerals to decimal

Microsoft Interview Questions and Answers


(Continued from previous question...)

106. Roman numerals to decimal

Question:
Roman numerals to decimal


maybe an answer:


#include<iostream>
#include<string>
int main()
{
char str[100];
int a[100];
std::cout << "Enter Roman number" <<std::endl;
std::cin >>str;
for(int i =0; i < strlen(str); i++)
{
if(str[i] == 'I')
a[i] = 1;
if(str[i] == 'V')
a[i] = 5;
if(str[i] == 'X')
a[i] = 10;
if(str[i] == 'L')
a[i] = 50;
if(str[i] == 'C')
a[i] = 100;
if(str[i] == 'M')
a[i] = 500;
}
int num=0,num1=0,number=0,start = 0;
int len = strlen(str);
if(strlen(str) == 1)
{
num = a[0];
std::cout<<a[0];
return 0;
}
if(strlen(str) == 2)
{
if(a[strlen(str)-1] > a[strlen(str)-2])
{
num = a[strlen(str) -1] - a[strlen(str)-2];
std::cout << num << std::endl;
return 0;
}
}
else
{
if(a[strlen(str)-1] > a[strlen(str)-2])
{
num = a[strlen(str) -1] - a[strlen(str)-2];
len = strlen(str)-2;
}
if(a[0]<a[1])
{
num1 = a[1]-a[0];
start = 2;
}
number = num + num1;
if(start == len)
{
std::cout<< number <<std::endl;
return 0;
}
while(start < len )
{
number = number + a[start];
start ++;
}
std::cout << number << std::endl;
return 0;
}
}

(Continued on next question...)

Other Interview Questions