কম্পিউটার

ক্যারি প্রচার না করে দুই সংখ্যার যোগ?


এখানে আমরা একটি সমস্যা দেখতে পাব, যেখানে আমরা দুটি n ডিজিটের সংখ্যা যোগ করব কিন্তু ক্যারিটি প্রচারিত হবে না। আমরা এই ধারণাটি একটি উদাহরণের মাধ্যমে বুঝতে পারি -

ক্যারি প্রচার না করে দুই সংখ্যার যোগ?

সুতরাং আমরা দেখতে পাচ্ছি যে এখানে শুধুমাত্র সংখ্যা যোগ হচ্ছে এবং উত্তর বসানো হয়েছে। এখানে একটি কৌশল. আমাদের ডান থেকে বামে নম্বর স্ক্যান করতে হবে। সুতরাং 3+2 =6 এর যোগফল প্রথমে গণনা করা হবে, কিন্তু এটি শেষে স্থাপন করা হবে। তাই আমরা মধ্যবর্তী ফলাফল সংরক্ষণ করতে স্ট্যাক ব্যবহার করব।

অ্যালগরিদম

noPropagateCarry(a, b)

begin
   size = max of length of a and length of b
   for i in range i to size, do
      al := last digit of a
      bl := last digit of b
      push (al + bl) into stack
      a := a / 10
      b := b /10
   done
   pop and print the elements from stack
end

উদাহরণ

#include<iostream>
#include<stack>
#include<cmath>
using namespace std;
int length(int n){
   return log10(n) + 1;
}
void noPropagateCarry(int a, int b){
   int size = max(length(a), length(b));
   stack<int> stk;
   for(int i = 0; i <size; i++){
      int al = a % 10; //last digit of a
      int bl = b % 10; //last digit of b
      stk.push(al + bl);
      a = a / 10; b = b/10;
   }
   while(!stk.empty()){
      cout << stk.top();
      stk.pop();
   }
}
main() {
   int a = 7583, b = 9642;
   cout << "Result: ";
   noPropagateCarry(a, b);
}

আউটপুট

Result: 1611125

  1. সি প্রোগ্রাম কোন অপারেটর ব্যবহার না করে দুটি সংখ্যার যোগফল বের করতে

  2. C# এ একটি পদ্ধতি ব্যবহার না করে দুটি বাইনারি সংখ্যার যোগফল বের করুন?

  3. C# এ টেম্প ভেরিয়েবল ব্যবহার না করে কিভাবে দুটি সংখ্যা অদলবদল করা যায়

  4. পাইথন প্রোগ্রাম দুটি সংখ্যা যোগ করতে