Saturday, May 14, 2011

PROGRAM TO CONVERT ROMAN NUMERALS INTO NUMBERS

This Program will convert roman numerals into numbers

e.g if The input is IV, the ouput will be 4

This program support roman numerals upto M i.e. 1000

#include<conio.h>
#include<stdio.h>
#include<iostream.h>
main()
{
do
{
clrscr();
char ch[10];
int n[11];
n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0;
int flag[10];
flag[1]=1,flag[2]=1,flag[3]=1,flag[4]=1,flag[5]=1,flag[6]=1,flag[7]=1,flag[8]=1,flag[9]=1,flag[10]=1,flag[11]=1;
printf("Enter roman characters in Capital : ");
gets(ch);

for(int a=0; a<=9; a++)
{
switch(ch[a])
{
case 'I':

n[a]=1;
break;

case'V':
n[a]=5;
break;

case'X':
n[a]=10;
break;

case'L':
n[a]=50;
break;

case'C':
n[a]=100;
break;

case'D':
n[a]=500;
break;

case'M':
n[a]=1000;
break;
}
}

for(a=0; a<=9; a++)
{
if(n[1]>n[0] && flag[1]!=0)
{
n[1]=(n[1]-n[0]);
    n[0]=0;
    flag[1]=0;
}

else if(n[2]>n[1] && flag[2]!=0)
{
n[2]=(n[2]-n[1]);
    n[1]=0;
    flag[2]=0;
}
else if(n[3]>n[2] && flag[3]!=0)
{
n[3]=(n[3]-n[2]);
    n[2]=0;
    flag[3]=0;
}
else if(n[4]>n[3] && flag[4]!=0)
{
n[4]=(n[4]-n[3]);
    n[3]=0;
    flag[4]=0;
}
else if(n[5]>n[4] && flag[5]!=0)
{
n[5]=(n[5]-n[4]);
    n[4]=0;
    flag[5]=0;
}
else if(n[6]>n[5] && flag[6]!=0)
{
n[6]=(n[6]-n[5]);
    n[5]=0;
    flag[6]=0;
}
else if(n[7]>n[6] && flag[7]!=0)
{
n[7]=(n[7]-n[6]);
    n[6]=0;
    flag[7]=0;
}
else if(n[8]>n[7] && flag[8]!=0)
{
n[8]=(n[8]-n[7]);
    n[7]=0;
    flag[8]=0;
    }
else if(n[9]>n[8] && flag[9]!=0)
{
    n[9]=(n[9]-n[8]);
    n[8]=0;
    flag[9]=0;
}
}
if(n[1]==1)
n[1]=0;
printf("\nThat Roman numeral is equivalent to %d",n[0]+n[1]+n[2]+n[3]+n[4]+n[5]+n[6]+n[7]+n[8]+n[9]+n[10]);
printf("\n\nDo you want to run this program again (y/n) ?");
}
while(getche()!='n');
getche();
}

No comments:

Post a Comment