রোমান সংখ্যা নন-পজিশনাল সংখ্যা। কিছু নিউমেরাল একসাথে রেখে রোমান সংখ্যায় একটি সংখ্যা তৈরি করা হয়। উদাহরণস্বরূপ, সংখ্যা ৭৫ কে ৭৫ = ৫০ + ১০ + ১০ + ৫ হিসেবে প্রকাশ করা যায়, তাই রোমান নিউমেরাল হল LXXV।
এই সমস্যায় একটি সংখ্যা দশমিক ফরম্যাটে দেওয়া থাকে, আমাদের কাজ সেটিকে রোমান নিউমেরাল স্ট্রিং-এ রূপান্তর করা।
বিভিন্ন সিম্বল এবং তাদের মান আছে, যেন:
| I | IV | V | IX | X | XL | L | XC | C | CD | D | CM | M | MMMM | V’ |
| ১ | ৪ | ৫ | ৯ | ১০ | ৪০ | ৫০ | ৯০ | ১০০ | ৪০০ | ৫০০ | ৯০০ | ১০০০ | ৪০০০ | ৫০০০ |
এই টেবিল ব্যবহার করে, আমরা সহজে একটি প্রদত্ত সংখ্যার রোমান নিউমেরাল বের করতে পারি।
ইনপুট এবং আউটপুট
ইনপুট: দশমিক সংখ্যা: ৩৫৬৯ আউটপুট: ৩৫৬৯-এর রোমান সমতুল্য হল: MMMDLXIX
অ্যালগরিদম
decToRoman(nuList, num)
ইনপুট: মানসহ নিউমেরাল লিস্ট, রোমানে রূপান্তর করার সংখ্যা।
আউটপুট: প্রদত্ত সংখ্যার রোমান নিউমেরাল।
শুরু
যদি num ≠ 0, তবে
max := সর্বোচ্চ নিউমেরাল মান পান, যা সংখ্যা থেকে বড় নয়
nuList[max].symbol প্রদর্শন করুন
num := num – nuList[max].value
decToRoman(nuList, num)
শেষউদাহরণ
#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++) //অ্যারেতে ১৫টি নিউমেরাল 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