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

বেস n সংখ্যা যোগ (Adding base n numbers)


এই সমস্যায়, দুটি সংখ্যা দেওয়া আছে। সেই সংখ্যাগুলোর বেস n। আমাদের বেস n-এই সেই সংখ্যাগুলোর যোগফল বের করতে হবে।

প্রথমে, সংখ্যাগুলো দশমিক সংখ্যায় রূপান্তর করা হয়। দশমিক মান থেকে, আমরা সহজে তাদের যোগ করতে পারি। অবশেষে, সংখ্যাগুলো আবার বেস n সংখ্যায় রূপান্তর করা হয়।

বেস n সংখ্যাগুলো স্ট্রিং হিসেবে দেওয়া থাকে, কারণ যেসব সংখ্যার বেস ৯-এর চেয়ে বড়, সেগুলোতে অক্ষর থাকতে পারে সংখ্যা প্রকাশ করতে, যেমন হেক্সাডেসিমেল সংখ্যায় ৬টি অক্ষর (A-F) থাকে।

ইনপুট এবং আউটপুট

ইনপুট: একটি সংখ্যা পদ্ধতির বেস: ১৬ প্রথম সংখ্যা 2C দ্বিতীয় সংখ্যা 5F আউটপুট: যোগফলের ফলাফল হল: 8B

অ্যালগরিদম

baseNtoDec(number, base)

ইনপুট - বেস N-এর সংখ্যা স্ট্রিং, বেস N-এর মান।

আউটপুট - বেস N-এর সংখ্যার দশমিক সমতুল্য।

শুরু 
  len := number-এর দৈর্ঘ্য 
  power := 1 
  num := 0 
  i := len -1 থেকে 0 পর্যন্ত নিচের দিকে, করুন 
    যদি number[i] >= base, তবে 
      অবৈধ সংখ্যা ফেরত দিন 
    num := num + number[i] * power 
    power := power * base 
  শেষ 
  num ফেরত দিন 
শেষ

decToBaseN(dec, base)

ইনপুট: দশমিক সংখ্যা, বেস N যাতে দশমিক সংখ্যাকে ওই বেসে রূপান্তর করা যায়।

আউটপুট: বেস N-এর সংখ্যা স্ট্রিং।

শুরু 
  যতক্ষণ dec > 0, করুন 
    res := concatenate (dec mod base) with res 
    dec := dec / base 
  শেষ 
  রেজাল্ট উল্টো করুন 
  res ফেরত দিন 
শেষ

addBaseN(num1, num2, base)

ইনপুট: বেস N-এ দুটি সংখ্যা, বেস N-এর মান।

আউটপুট: বেস N-এ যোগফলের সংখ্যা।

শুরু 
  dec1 := baseNtoDec(num1, base) 
  dec2 := baseNtoDec(num2, base) 
  sum := decToBaseN(dec1 + dec2, base) 
  sum ফেরত দিন 
শেষ

উদাহরণ

#include<iostream> #include<algorithm> using namespace std; int getVal(char c) {   if(c >= '0' && c<='9')     return int(c-'0');     //প্রদত্ত সংখ্যার দশমিক মান   else     return int(c-'A'+10);     //অ্যালফানিউমেরিক সংখ্যা জন্য } char revVal(int n) {   if(n >= 0 && n <=9)     return char(n+'0');     //প্রদত্ত সংখ্যার ক্যারেক্টার মান   else     return char(n+'A'-10);     //অ্যালফানিউমেরিক সংখ্যা জন্য, দশমিক থেকে অক্ষর পান } int baseNtoDec(string number, int base) {   int len = number.size();   int power = 1;   int num = 0;   for(int i = len-1; i>= 0; i--) {     //শেষ ডিজিট থেকে প্রথম ডিজিট পর্যন্ত     if(getVal(number[i]) >= base)       return INT_MIN;     //যখন একটি ডিজিট >= base, ত্রুটি হিসেবে -ve অসীম ফেরত দিন     num += getVal(number[i])*power;     power = power*base;   }   return num; } string decToBaseN(int dec, int base) {   string res = "";   //খালি স্ট্রিং   while(dec > 0) {     res += revVal(dec%base);     dec /= base;   }   reverse(res.begin(), res.end());   //স্ট্রিং উল্টো করুন ফাইনাল আন্সার পেতে   return res; } int main() {   int base;   string num1, num2, sum;   cout << "Enter Base: "; cin >> base;   cout << "Enter first number in base "<<base<<": ";cin >> num1;   cout << "Enter second number in base "<<base<<": ";cin >> num2;   sum = decToBaseN((baseNtoDec(num1, base) + baseNtoDec(num2, base)), base);   cout << "The result of addition is: " << sum; }

আউটপুট

Enter Base: 16 Enter first number in base 16: 2C Enter second number in base 16: 5F The result of addition is: 8B

  1. জাভাস্ক্রিপ্ট Numbers উদাহরণ

  2. জাভাস্ক্রিপ্টে নম্বরগুলো নিকটতম পাওয়ারে রাউন্ড অফ করা

  3. জাভাস্ক্রিপ্টে স্ট্রিং রিপ্রেজেন্টেড নম্বর যোগ করা পূর্ণ কনভার্শন ছাড়া

  4. জাভাস্ক্রিপ্টে দুটি সংখ্যা যোগ করার সময় ক্যারি (carry) কতবার হয় সেটি গণনা করা