This is a C Program to Convert Roman Number to Decimal Number.
Problem Description
This program takes a roman number as input and converts it to decimal number.
Problem Solution
1. Take a roman number as input.
2. Using switch statement define the value of each roman digit.
3. Through switch statement access each digit of a roman number and compute the value.
4. Print the value and exit.
Program/Source Code
Here is source code of the C program to Convert Roman Number to Decimal Number. The C program is successfully compiled and run on a Linux system. The program output is also shown below.
/*
/*
* C Program to Convert Roman Number to Decimal Number
*/
#include
#include
int digit(char);
int main(){
char roman_Number[1000];
int i=0;
long int number =0;
printf(“Enter any roman number (Valid digits are I, V, X, L, C, D, M): \n”);
scanf(“%s”,roman_Number);
while(roman_Number[i]){
if(digit(roman_Number[i]) < 0){
printf("Invalid roman digit : %c",roman_Number[i]);
return 0;
}
if((strlen(roman_Number) -i) > 2){
if(digit(roman_Number[i]) < digit(roman_Number[i+2])){
printf("Invalid roman number");
return 0;
}
}
if(digit(roman_Number[i]) >= digit(roman_Number[i+1]))
number = number + digit(roman_Number[i]);
else{
number = number + (digit(roman_Number[i+1]) – digit(roman_Number[i]));
i++;
}
i++;
}
printf(“Its decimal value is : %ld”,number);
return 0;
}
int digit(char c){
int value=0;
switch(c){
case ‘I’: value = 1; break;
case ‘V’: value = 5; break;
case ‘X’: value = 10; break;
case ‘L’: value = 50; break;
case ‘C’: value = 100; break;
case ‘D’: value = 500; break;
case ‘M’: value = 1000; break;
case ‘\0’: value = 0; break;
default: value = -1;
}
return value;
}
Runtime Test Cases
Output:
Enter any roman number (Valid digits are I, V, X, L, C, D, M):
XVII
Its decimal value is: 17