परिचय
रोमन संख्याएं स्थितिगत संख्याएं नहीं हैं। कुछ अंकों को एक साथ रखकर रोमन संख्याओं में एक संख्या बनाई जाती है। उदाहरण के लिए संख्या 75 को 75 = 50 + 10 + 10 + 5 के रूप में व्यक्त किया जा सकता है, इसलिए रोमन अंक LXXV हैं।
इस समस्या में एक संख्या दशमलव प्रारूप में प्रदान की जाती है, हमारा कार्य इसे रोमन अंक स्ट्रिंग में बदलना है।
विभिन्न प्रतीक और उनके मान हैं, जैसे यह:
| I | IV | V | IX | X | XL | L | XC | C | CD | D | CM | M | MMMM | V' |
| 1 | 4 | 5 | 9 | 10 | 40 | 50 | 90 | 100 | 400 | 500 | 900 | 1000 | 4000 | 5000 |
इस तालिका का उपयोग करके, हम किसी दी गई संख्या के रोमन अंक आसानी से ढूंढ सकते हैं।
इनपुट और आउटपुट
इनपुट: दशमलव संख्या: 3569 आउटपुट: 3569 का रोमन समतुल्य है: MMMDLXIX
एल्गोरिदम
decToRoman(nuList, num)
इनपुट: अपने मान के साथ अंक सूची, रोमन में बदलने के लिए संख्या
आउटपुट: दी गई संख्या के लिए रोमन अंक
Begin
यदि num ≠ 0, तो
max := अधिकतम अंक मान प्राप्त करें, संख्या से अधिक नहीं
nuList[max].symbol प्रदर्शित करें
num := num – nuList[max].value
decToRoman(nuList, num)
End
उदाहरण (C++ कोड)
#include <iostream>
using namespace std;
struct numeral {
string sym;
int val;
};
int maxNume(numeral nu[], int num) {
int index;
for (int i = 0; i < 15; i++) // सरणी में 15 अंक
if (nu[i].val <= num)
index = i; // सबसे बड़ा अंक मान सूचकांक, संख्या से अधिक नहीं
return index;
}
void decToRoman(numeral nu[], int num) {
int max;
if (num != 0) {
max = maxNume(nu, num);
cout << nu[max].sym;
num -= nu[max].val; // संख्या घटाएं
decToRoman(nu, num); // पुनरावर्ती रूप से अंक प्रिंट करें
}
}
int main() {
int number;
numeral nume[15] = {{"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},{"MMMM",4000},{"V'",5000}};
cout << "Enter a decimal number: "; cin >> number;
if (number > 0 && number <= 5000) { // इनपुट संख्या की जांच
cout << "The Roman equivalent of " << number << " is: ";
decToRoman(nume, number);
} else {
cout << "Invalid Input";
}
}
आउटपुट
Enter a decimal number: 3569 The Roman equivalent of 3569 is: MMMDLXIX