কম্পিউটার টিউটোরিয়াল

C-তে ইন্টিজারকে রোমান নম্বরে কনভার্ট করা


একটি ডেসিমেল নম্বর n দেওয়া আছে, আমাদের এটি রোমান নম্বরে কনভার্ট করতে হবে। n-এর মান ১ থেকে ৪০০০ পর্যন্ত। কিছু রোমান নম্বর নিচে দেওয়া হলো।

নম্বর
নিউমারেল
১
I
৪
IV
৫
V
৯
IX
১০
X
৪০
XL
৫০
L
৯০
XC
১০০
C
৪০০
CD
৫০০
D
৯০০
CM
১০০০
M
৪০০০
MMMM

তাই যদি n = 859 হয়, তবে এর রোমান নম্বর হবে DCCCLIX

এটি সমাধান করতে, আমরা নিচের ধাপগুলো অনুসরণ করব

  • দেওয়া লিস্টের জন্য নিউমারেল এবং সংশ্লিষ্ট ভ্যালু স্টোর করার জন্য একটি অ্যারে ডিফাইন করুন। এটাকে nume অ্যারে বলা হয়
  • আমরা একটি রিকারসিভ পদ্ধতি ব্যবহার করছি, decToRom() ফাংশনটি ব্যবহৃত হয়। এটি nume অ্যারে এবং নম্বর num নেয়।
  • decToRom() হবে নিচের মতো
  • যদি num ০ না হয়, তবে
    • max := nume অ্যারেতে থেকে সে সর্বোচ্চ ভ্যালু খুঁজুন যা num-এর চেয়ে বড় নয়
    • সেটিmax-এর জন্য রেজাল্ট স্ট্রিং-এ সেই ভ্যালু অ্যাপেন্ড করুন
    • num := num − max ভ্যালু
    • decToRom(nume, num)

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −

#include<stdio.h>
typedef struct{
    char *sym;
    int val;
}numeral;
int maxNume(numeral *nu, int num){
    int i, index;
    for(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);
        printf("%s", nu[max].sym);
        num -= nu[max].val;//নম্বর কমান
        decToRoman(nu, num);//রিকারসিভভাবে নিউমারেল প্রিন্ট
    }
}
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}};
    printf("Enter a decimal number: ");
    scanf("%d", &number);
    if(number >0 && number <= 5000){//ইনপুট নম্বর চেক
        printf("The Roman equivalent of %d is ", number);
        decToRoman(nume, number);
    }
    else{
        printf("Invalid Input");
    }
    printf("\n");
}

ইনপুট

570 3574

আউটপুট

DLXX MMMDLXXIV

  1. পাইথনে অ্যারে ফর্ম ইন্টিজারে যোগ করা (Add to Array-Form of Integer in Python)

  2. পাইথনে রোমান টু ইন্টিজার (Roman to Integer)

  3. পাইথনে ইন্টিজার রিভার্স (Reverse Integer)

  4. পাইথনে ধনাত্মক পূর্ণসংখ্যার বিট উল্টিয়ে ফেলার প্রোগ্রাম