কম্পিউটার

দুটি বাইনারি স্ট্রিং যোগ করার প্রোগ্রাম, এবং C++ এ বাইনারি স্ট্রিং হিসাবেও ফিরে আসে


ধরুন আমাদের দুটি বাইনারি স্ট্রিং a এবং b আছে, আমাদের এই বাইনারি সংখ্যাগুলি যোগ করতে হবে এবং একটি স্ট্রিং হিসাবে তাদের যোগফল খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি a ="10110", b ="10010" এর মত হয়, তাহলে আউটপুট হবে "101000"।

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

  • ret :=খালি স্ট্রিং
  • na :=a এর আকার, nb :=b এর আকার
  • i :=na - 1, j :=nb - 1
  • বহন করুন :=0
  • যখন (i>=0 বা j>=0), করবেন:
    • addA :=(যদি i>=0 হয়, তাহলে a[i] - '0'-এর ASCII, অন্যথায় 0)
    • addB :=(যদি j>=0 হয়, তাহলে b[j] - '0'-এর ASCII, অন্যথায় 0)
    • সমষ্টি :=addA + addB + বহন
    • বহন করুন :=যোগফল / 2
    • সমষ্টি :=সমষ্টি মোড 2
    • ret :=ret concatenate sum
    • (i 1 কমিয়ে দিন)
    • (j 1 দ্বারা কমিয়ে দিন)
  • যদি বহন অ-শূন্য হয়, তাহলে:
    • ret :=ret concatenate বহন
  • অ্যারে রিভার্স করুন
  • রিটার্ন রিটার্ন

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string solve(string a, string b){
      string ret = "";
      int na = a.size();
      int nb = b.size();
      int i = na - 1;
      int j = nb - 1;
      int carry = 0;
      while(i >= 0 || j >= 0){
         int addA = i >= 0 ? a[i] - '0' : 0;
         int addB = j >= 0 ? b[j] - '0' : 0;
         int sum = addA + addB + carry;
         carry = sum / 2;
         sum %= 2;
         ret += to_string(sum);
         i--;
         j--;
      }
      if(carry)
         ret += to_string(carry); reverse(ret.begin(), ret.end());
         return ret;
   }
};
main(){
   string a = "10110", b = "10010"; Solution ob;
   cout << ob.solve(a, b);
}

ইনপুট

"10110","10010"

আউটপুট

101000

  1. C++ এ দুটি বাইনারি ট্রি মার্জ করার প্রোগ্রাম

  2. C++ এ দুটি বাইনারি স্ট্রিং যোগ করার জন্য প্রোগ্রাম

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

  4. C++ এ স্ট্রিং গুণ করুন