রোমান সংখ্যাগুলি অ-পজিশনাল সংখ্যা৷ কিছু সংখ্যা রোমান সংখ্যায় একটি সংখ্যা গঠনের জন্য একসাথে স্থাপন করা হয়। উদাহরণস্বরূপ 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৷ |
এই টেবিলটি ব্যবহার করে, আমরা সহজেই একটি প্রদত্ত সংখ্যার রোমান সংখ্যা খুঁজে পেতে পারি।
ইনপুট এবং আউটপুট
Input: Decimal number: 3569 Output: The Roman equivalent of 3569 is: MMMDLXIX
অ্যালগরিদম
decToRoman(nuList, num)
ইনপুট: এর মান সহ সংখ্যার তালিকা, রোমানে রূপান্তরিত করার সংখ্যা।
আউটপুট: প্রদত্ত সংখ্যার জন্য রোমান সংখ্যা।
Begin if num ≠ 0, then max := get maximum numeral value, not greater than number display the nuList[max].symbol num := num – nuList[max].value decToRoman(nuList, num) End
উদাহরণ
#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 numerals in array
if(nu[i].val<= num)
index = i;
//gretest value numeral index, not greater than number
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; //decrease number
decToRoman(nu, num); //recursively print numerals
}
}
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) { //checking input number
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