Quantcast
Channel: The Crazy Programmer
Viewing all articles
Browse latest Browse all 761

Convert Decimal Number to Roman Numeral in C and C++

$
0
0

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.

Convert Decimal Number to Roman Numeral in C and C++

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.


Viewing all articles
Browse latest Browse all 761

Trending Articles