C Program to convert a decimal number to Roman numerals
Last updated on September 24, 2020
The following is a C program to convert a decimal number to Roman numerals:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | /******************************************************
Program to convert a decimal number to roman numerals
*
* Enter a number: 1996
* Roman numerals: mmxii
*
******************************************************/
#include <stdio.h>
int main(void)
{
int num, rem;
printf("Enter a number: ");
scanf("%d", &num);
printf("Roman numerals: ");
while(num != 0)
{
if (num >= 1000) // 1000 - m
{
printf("m");
num -= 1000;
}
else if (num >= 900) // 900 - cm
{
printf("cm");
num -= 900;
}
else if (num >= 500) // 500 - d
{
printf("d");
num -= 500;
}
else if (num >= 400) // 400 - cd
{
printf("cd");
num -= 400;
}
else if (num >= 100) // 100 - c
{
printf("c");
num -= 100;
}
else if (num >= 90) // 90 - xc
{
printf("xc");
num -= 90;
}
else if (num >= 50) // 50 - l
{
printf("l");
num -= 50;
}
else if (num >= 40) // 40 - xl
{
printf("xl");
num -= 40;
}
else if (num >= 10) // 10 - x
{
printf("x");
num -= 10;
}
else if (num >= 9) // 9 - ix
{
printf("ix");
num -= 9;
}
else if (num >= 5) // 5 - v
{
printf("v");
num -= 5;
}
else if (num >= 4) // 4 - iv
{
printf("iv");
num -= 4;
}
else if (num >= 1) // 1 - i
{
printf("i");
num -= 1;
}
}
return 0;
}
|
Expected Output: 1st run:
1 2 | Enter a number: 99
Roman numerals: xcix
|
2nd run:
1 2 | Enter a number: 2020
Roman numerals: mmxx
|
How it works #
The following table lists some decimal numbers and their corresponding Roman numerals:
Decimal Number | Roman Numeral |
---|---|
1 | I |
4 | IV |
5 | V |
9 | IX |
10 | X |
40 | XL |
50 | L |
90 | XC |
100 | C |
400 | CD |
500 | D |
900 | CM |
1000 | M |
To convert a decimal number num
to roman numerals, we do the following:
- Find the largest decimal number
r
in the above table which is less than or equal to the decimal numbernum
. - Write the Roman numeral corresponding to the decimal number
r
. - Subtract the
r
fromnum
and assign it back tonum
i.enum = num - r
. - Repeat steps 1, 2 and 3, until the
num
is reduced to0
.
Let's take an example.
Example: Convert decimal 123 to Roman numerals
Iteration | num | r | Roman Numeral | New Value of num |
---|---|---|---|---|
After 1st iteration | 123 |
100 |
c |
num=123-100=23 |
After 2nd iteration | 23 |
10 |
x |
num=23-10=13 |
After 3rd iteration | 13 |
10 |
x |
num=13-10=3 |
After 4th iteration | 3 |
1 |
i |
num=3-1=2 |
After 5th iteration | 2 |
1 |
i |
num=2-1=1 |
After 6th iteration | 1 |
1 |
i |
num=1-1=0 |
Hence, 123 = cxiii
.
Load Comments