For Eng Swan Only

profileGregmn
prog1.docx

/*

* 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;

}