For Eng Swan Only
/*
* C Program to Convert Numbers to Roman Numerals
*/
#include<stdio.h>
void predigits(char c1,char c2);//the digits that appear before
void postdigits(char c,int n);//the digits that appear after
char roman_Number[1000];//declare and initialize roman nmber range
int i=0;
int main(){
int j;
long int number;
printf("Enter any natural number: ");
scanf("%d",&number);//receives entered number
if(number <= 0){
printf("Invalid number");//rejects negative numbers
return 0;
}
while(number != 0){
if(number >= 1000){
postdigits('M',number/1000);
number = number - (number/1000) * 1000;
}//divides value by 1000 for the digits after and assigns it letter M
else if(number >=500){
if(number < (500 + 4 * 100)){
postdigits('D',number/500);
number = number - (number/500) * 500;
}//divides value by 500 for the digits after and assigns it letter D
else{
predigits('C','M');
number = number - (1000-100);
}//takes the value after and checks to assign it C or M
}
else if(number >=100){
if(number < (100 + 3 * 100)){
postdigits('C',number/100);
number = number - (number/100) * 100;
}//divides value by 100 for the digits after and assigns it letter C
else{
predigits('L','D');
number = number - (500-100);
}
}
else if(number >=50){
if(number < (50 + 4 * 10)){
postdigits('L',number/50);
number = number - (number/50) * 50;
}//divides value by 50 for the digits after and assigns it letter L
else{
predigits('X','C');
number = number - (100-10);
}
}
else if(number >=10){
if(number < (10 + 3 * 10)){
postdigits('X',number/10);
number = number - (number/10) * 10;
}//divides value by 50 for the digits after and assigns it letter X
else{
predigits('X','L');
number = number - (50-10);
}
}
else if(number >=5){
if(number < (5 + 4 * 1)){
postdigits('V',number/5);
number = number - (number/5) * 5;
}//divides value by 5 for the digits after and assigns it letter V
else{
predigits('I','X');
number = number - (10-1);
}
}
else if(number >=1){
if(number < 4){
postdigits('I',number/1);
number = number - (number/1) * 1;
}//divides value by 1 for the digits after and assigns it letter I
else{
predigits('I','V');
number = number - (5-1);
}
}
}
printf("Roman number will be: ");
for(j=0;j<i;j++)//loop for all values input
printf("%c",roman_Number[j]);//display the roman number
return 0;
}
void predigits(char c1,char c2){//increments the values
roman_Number[i++] = c1;
roman_Number[i++] = c2;
}
void postdigits(char c,int n){//increments the values
int j;
for(j=0;j<n;j++)
roman_Number[i++] = c;
}