কম্পিউটার

বেস n সংখ্যা যোগ করা হচ্ছে


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

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

n বেস নম্বরগুলি একটি স্ট্রিং হিসাবে দেওয়া হয়, কারণ যে সংখ্যাগুলির ভিত্তি 9-এর বেশি, তাতে সংখ্যাগুলিকে প্রতিনিধিত্ব করার জন্য কিছু বর্ণমালা থাকতে পারে, যেমন হেক্সাডেসিমেল সংখ্যা, সেখানে 6টি অক্ষর (A-F) রয়েছে৷

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

Input: 
The base of a number system: 16
First number 2C
Second number 5F
Output:
The result of addition is: 8B

অ্যালগরিদম

baseNtoDec(সংখ্যা, ভিত্তি)

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

আউটপুট - বেস N.

-এ সংখ্যাটির দশমিক সমতুল্য
Begin
   len := length of number
   power := 1
   num := 0

   for i := len -1 down to 0, do
      if number[i] >= base, then
         return invalid number
      num := num + number[i] * power
      power := power * base
   done

   return num
End

decToBaseN(dec, base)

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

আউটপুট: বেস N.

এর সংখ্যা স্ট্রিং
Begin
   while dec > 0, do
      res := concatenate (dec mod base) with res
      dec := dec / base
   done

   reverse the result
   return res
End

addBaseN(num1, num2, base)

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

আউটপুট: বেস N.

এ যোগ করার পর সংখ্যা
Begin
   dec1 := baseNtoDec(num1, base)
   dec2 := baseNtoDec(num2, base)
   sum := decToBaseN(dec1 + dec2, base)
   return sum
End

উদাহরণ

#include<iostream>
#include<algorithm>
using namespace std;

int getVal(char c) {
   if(c >= '0' && c<='9')
      return int(c-'0');    //decimal value of given number
   else
      return int(c-'A'+10);    //for Alphanumeric numbers
}

char revVal(int n) {
   if(n >= 0 && n <=9)
      return char(n+'0');    //character value of given number
   else
      return char(n+'A'-10);    //for Alphanumeric numbers, get alphabet from decimal
}

int baseNtoDec(string number, int base) {
   int len = number.size();
   int power = 1;
   int num = 0;

   for(int i = len-1; i>= 0; i--) {    //from last digit to first digit
      if(getVal(number[i]) >= base)
         return INT_MIN;    //when a digit is >= base, return -ve infinity as error
      num += getVal(number[i])*power;
      power = power*base;
   }
   return num;
}

string decToBaseN(int dec, int base) {
   string res = "";    //empty string
   while(dec > 0) {
      res += revVal(dec%base);
      dec /= base;
   }

   reverse(res.begin(), res.end());    //reverse the string to get final answer
   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. জাভাস্ক্রিপ্ট নম্বর উদাহরণ

  2. জাভাস্ক্রিপ্টের কিছু নিকটতম শক্তিতে সংখ্যাগুলিকে রাউন্ডিং করা

  3. জাভাস্ক্রিপ্টে সম্পূর্ণ রূপান্তর ছাড়াই স্ট্রিং দ্বারা উপস্থাপিত সংখ্যা যোগ করা

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