Tuesday 12 February 2013

Conversion of decimal to roman using C

In previous post you learnt to use for loop and do…while loop in program with the example for printing prime numbers. In this example I will show you the use of while loop and if…else ladder. This program converts the decimal input to corresponding roman output. It seems difficult first time but once you have seen code it will be very easy to you. This program only converts number between 1 and 3000. Complete source code and output is given here..
Source Code
  1: ///conversion of decimal to roman
  2: #include<stdio.h>
  3: #include<conio.h>
  4: 
  5: int main(){
  6:     int input;
  7:     int thousand,hundred,ten,one;
  8:     while(1){
  9:     printf("\nEnter the number between 1-3000: ");
 10:     scanf("%d",&input);
 11:     //printf("\n");
 12:     while(input<=0 || input>3000){
 13:         printf("Invalid input!");
 14:         printf("\nEnter the number again: ");
 15:         scanf("%d",&input);
 16:         //printf("\n");
 17:     }
 18: 
 19:     thousand = (input/1000)*1000;
 20:     hundred = ((input/100)%10)*100;
 21:     ten = ((input/10)%10)*10;
 22:     one = ((input/1)%10)*1;
 23: 
 24:     //checking for thousands
 25:     if(thousand==1000)
 26:         printf("M");
 27:     else if(thousand==2000)
 28:         printf("MM");
 29:     else if(thousand==3000)
 30:         printf("MMM");
 31: 
 32:     //checking for hundreds
 33:     if(hundred==100)
 34:         printf("C");
 35:     else if(hundred==200)
 36:         printf("CC");
 37:     else if(hundred==300)
 38:         printf("CCC");
 39:     else if(hundred==400)
 40:         printf("CD");
 41:     else if(hundred==500)
 42:         printf("D");
 43:     else if(hundred==600)
 44:         printf("DX");
 45:     else if(hundred==700)
 46:         printf("DXX");
 47:     else if(hundred==800)
 48:         printf("DXXX");
 49:     else if(hundred==900)
 50:         printf("CM");
 51: 
 52:     //checking for tens
 53:     if(ten==10)
 54:         printf("X");
 55:     else if(ten==20)
 56:         printf("XX");
 57:     else if(ten==30)
 58:         printf("XXX");
 59:     else if(ten==40)
 60:         printf("XL");
 61:     else if(ten==50)
 62:         printf("L");
 63:     else if(ten==60)
 64:         printf("LX");
 65:     else if(ten==70)
 66:         printf("LXX");
 67:     else if(ten==80)
 68:         printf("LXXX");
 69:     else if(ten==90)
 70:         printf("XC");
 71: 
 72:     //checking for ones
 73:     if(one==1)
 74:         printf("I");
 75:     else if(one==2)
 76:         printf("II");
 77:     else if(one==3)
 78:         printf("III");
 79:     else if(one==4)
 80:         printf("IV");
 81:     else if(one==5)
 82:         printf("V");
 83:     else if(one==6)
 84:         printf("VI");
 85:     else if(one==7)
 86:         printf("VII");
 87:     else if(one==8)
 88:         printf("VIII");
 89:     else if(one==9)
 90:         printf("IX");
 91: 
 92: 
 93:     printf("\nAnother conversion? ");
 94:     if(getche()=='n')
 95:     break;
 96:     }
 97: 
 98: 
 99:     return 0;
100: }
101: 

Output

roman

No comments:

Post a Comment

Comment