/*
@Author:Mr.Suppakit Thongdee
@Website: www.sourcecode.in.th
*/
#include <stdio.h>
#include <conio.h>
int writeOutput(int number, int i, int value, char ch1, char ch2, char ch3){
int j;
switch(i){
case 1:
case 2:
case 3:
for(j=1; j<=i; j++){
printf("%c",ch1);
number = number-value;
}
break;
case 4:
printf("%c",ch1);
printf("%c",ch2);
number = number -value*4;
break;
case 5:
case 6:
case 7:
case 8:
printf("%c",ch2);
number = number-value*5;
for(j=0; j<i-5; j++){
printf("%c",ch1);
number = number-value;
}
break;
case 9:
printf("%c%c",ch1,ch3);
break;
}
return number;
}
int printRoman(int number,int value){
int i,j;
char ch;
i = number/value;
switch(value){
case 1000:
ch ='M';
for(j=1; j<=i; j++){
printf("%c",ch);
number = number-value;
}
break;
case 100:
number = writeOutput(number,i,value,'C','D',' ');
break;
case 10:
number =writeOutput(number,i,value,'X','L','C');
break;
case 1:
number =writeOutput(number,i,value,'I','V','X');
break;
}
return number;
}
void main(){
int num;
int i,j;
clrscr();
printf("Input number:");
scanf("%d",&num);
printf("result ROMAN number is: ");
//1000
num = printRoman(num,1000);
//100
num = printRoman(num,100);
//10
num = printRoman(num,10);
//1
num = printRoman(num,1);
getch();
}