Coding Challenge Day 20- Problem 1: Convert a given number to it’s Roman numeral equivalent

Hello! So I’m doing a 30 day coding challenge where I solve a few questions every day and thought of posting them here on my blog so that you guys can join the challenge too!

Welcome to Coding challenge Day 20: Problem 1! Be sure to post your answers, queries etc in the comments!

Problem: Convert a given number to it’s Roman numeral equivalent

```SYMBOL       VALUE
I             1
IV            4
V             5
IX            9
X             10
XL            40
L             50
XC            90
C             100
CD            400
D             500
CM            900
M             1000   ```

Sample input: number=50
Output: Roman numeral: L

Sample input: number=534
Output: Roman numeral: DXXXIV

Solution:

I learnt to solve this one from this LINK

``````package misc;

public class Program004roman_numeral_converter {

public static int digit (char ch, int num, int i, char c[]){
for (int j=0; j<num; j++)
c[i++]=ch;
return i;
}

public static int sub_digit (char ch1, char ch2, int i, char c[]){
c[i++]= ch1;
c[i++]= ch2;

return i;
}
public static void roman_numeral (int number){

char [] c= new char[100];
int i=0;

if(number <=0){
System.out.println("Number less than 0");
return;
}

while(number!=0){
if(number>=1000){
i=digit ('M', number/1000, i,c);
number=number%1000;
}

else if (number>=500){

if(number<900){
i=digit ('D', number/500, i, c);
number%=500;
}

else {
i= sub_digit ('C', 'M', i, c);
number %= 100;
}
}

else if (number >=100){

if(number<400){
i= digit ('C', number/100, i, c);
number %= 100;
}

else {

i= sub_digit ('C', 'D', i, c);
number %= 100;
}
}

else if (number >=50){

if (number <90){
i= digit ('L', number/50, i, c);
number%=10;
}

else {
i=sub_digit ('X', 'C', i, c);
number %=10;
}
}

else if (number >= 10){

if (number < 40){
i= digit ('X', number/10, i, c);
number %=10;
}

else {
i= sub_digit ('X', 'L', i, c);
number%= 10;
}
}

else if (number >= 5){
if (number <9){
i= digit ('V', number/5, i, c);
number %= 5;
}

else {
i= sub_digit ('I', 'X', i, c);
number=0;
}
}

else if (number >= 1){
if (number <4){
i=digit ('I', number, i, c);
number=0;
}

else {
i= sub_digit ('I', 'V', i ,c);
number=0;
}
}
}

System.out.print("Roman numeral: ");
for (int j=0; j<i; j++){
System.out.printf("%c", c[j]);
}
}

public static void main (String [] args){
int number=50;

roman_numeral(number);
}

}
``````