কম্পিউটার

C-তে রোমান থেকে পূর্ণসংখ্যা


একটি দশমিক সংখ্যা n দেওয়া হলে, আমাদের এটিকে রোমান সংখ্যায় রূপান্তর করতে হবে। n এর মান 1 থেকে 4000 এর মধ্যে রয়েছে। এগুলো কিছু রোমান সংখ্যা।

সংখ্যা
সংখ্যা
1
I
4
IV
5
V
9
IX
10
X
40
XL
50
L
90
XC
100
C
400
CD
500
D
900
CM
1000
M
4000
MMMM

সুতরাং সংখ্যাটি n =859 হলে, এর রোমান সংখ্যা হবে DCCCLIX

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব

  • প্রদত্ত তালিকার জন্য সংখ্যা এবং সংশ্লিষ্ট মান সঞ্চয় করার জন্য একটি অ্যারে সংজ্ঞায়িত করুন। এটাকে বলা হয় নিউম অ্যারে
  • আমরা একটি পুনরাবৃত্ত পদ্ধতি ব্যবহার করছি, ফাংশন decToRom() ব্যবহার করা হয়েছে। এটি সংখ্যা অ্যারে এবং সংখ্যা সংখ্যা নিচ্ছে।
  • decToRom() এর মত হবে
  • সংখ্যা 0 না হলে
    • সর্বোচ্চ :=সংখ্যা অ্যারে থেকে সর্বাধিক মান খুঁজুন যা সংখ্যার চেয়ে বড় নয়
    • ফলাফলের স্ট্রিং-এ সর্বোচ্চের মান যোগ করুন
    • সংখ্যা :=সংখ্যা – সর্বোচ্চ মান
    • decToRom(সংখ্যা, সংখ্যা)

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#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++){//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);
      printf("%s", nu[max].sym);
      num -= nu[max].val;//decrease number
      decToRoman(nu, num);//recursively print numerals
   }
}
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){//checking input number
      printf("The Roman equivalent of %d is ", number);
      decToRoman(nume, number);
   }
   else{
      printf("Invalid Input");
   }
   printf("\n");
}

ইনপুট

570
3574

আউটপুট

DLXX
MMMDLXXIV

  1. পাইথনে পূর্ণসংখ্যার অ্যারে-ফর্মে যোগ করুন

  2. পাইথনে রোমান থেকে পূর্ণসংখ্যা

  3. পাইথনে বিপরীত পূর্ণসংখ্যা

  4. পাইথন প্রোগ্রাম একটি ইতিবাচক পূর্ণসংখ্যা সংখ্যার বিট বিপরীত?