Here you will get program to convert decimal number to roman numeral in C and C++.
How it Works?
- Divide the given number in the order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value.
- Display the corresponding roman symbol of largest base value obtained by above method in output.
- Subtract the given number with largest base value to get new number.
- Repeat above process with the new number until it becomes 0.
Example:
Decimal Number: 250
- Divide it in order 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 to find largest base value. Here 250 is divided by 100. The corresponding roman symbol for 100 is C.
- Subtract 250 with 100 (largest base value in previous step) to get new number i.e. 150.
- Again divide 150 in the order mentioned earlier. It is divided by 100, so corresponding roman symbol is C.
- Subtract 150 with 100 to get new number i.e. 50.
- Divide 50 again in the order mentioned earlier. 50 is divided by 50, so corresponding roman symbol is L.
- Subtract 50 with 50. The new number obtained is 0 so we stop here.
- The final roman numeral is CCL.
Below program implements above algorithm.
Program to Convert Decimal Number to Roman Numeral in C
#include<stdio.h> void decimal2roman(int num){ int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols int i = 0; while(num){ //repeat process until num is not 0 while(num/decimal[i]){ //first base value that divides num is largest base value printf("%s",symbol[i]); //print roman symbol equivalent to largest base value num -= decimal[i]; //subtract largest base value from num } i++; //move to next base value to divide num } } int main() { printf("250 -> "); decimal2roman(250); printf("\n1550 -> "); decimal2roman(1550); printf("\n670 -> "); decimal2roman(670); return 0; }
Output
250 -> CCL
1550 -> MDL
670 -> DCLXX
Program to Convert Decimal Number to Roman Numeral in C++
#include<iostream> using namespace std; void decimal2roman(int num){ int decimal[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; //base values char *symbol[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //roman symbols int i = 0; while(num){ //repeat process until num is not 0 while(num/decimal[i]){ //first base value that divides num is largest base value cout<<symbol[i]; //print roman symbol equivalent to largest base value num -= decimal[i]; //subtract largest base value from num } i++; //move to next base value to divide num } } int main() { cout<<"250 -> "; decimal2roman(250); cout<<"\n1550 -> "; decimal2roman(1550); cout<<"\n670 -> "; decimal2roman(670); return 0; }
Comment below if you any queries related to above program.
The post Convert Decimal Number to Roman Numeral in C and C++ appeared first on The Crazy Programmer.
from The Crazy Programmer https://www.thecrazyprogrammer.com/2017/09/convert-decimal-number-roman-numeral-c-c.html
Comments
Post a Comment