Computer >> Máy Tính >  >> Lập trình >> C ++

Thêm n chuỗi nhị phân trong C ++?

Ở đây chúng ta sẽ thấy cách chúng ta có thể viết một chương trình có thể thêm n số nhị phân đã cho dưới dạng chuỗi. Phương pháp dễ dàng hơn là bằng cách chuyển đổi chuỗi nhị phân thành chuỗi tương đương thập phân của nó, sau đó thêm chúng và chuyển đổi lại thành nhị phân. Tại đây, chúng tôi sẽ thực hiện việc bổ sung theo cách thủ công.

Chúng tôi sẽ sử dụng một hàm trợ giúp để thêm hai chuỗi nhị phân. Hàm đó sẽ được sử dụng trong n-1 lần cho n chuỗi nhị phân khác nhau. Hàm sẽ hoạt động như bên dưới.

Thuật toán

addTwoBinary (bin1, bin2)

begin
   s := 0
   result is an empty string now
   i := length of bin1, and j := length of bin2
   while i >= 0 OR j>=0 OR s is 1, do
      if i >=0 then,
         s := s + bin1[i] as number
      else
         s := s + 0
      end if
      if j >=0 then,
         s := s + bin2[j] as number
      else
         s := s + 0
      end if
      result := (s mod 2) concatenate this with result itself
      s := s/2
      i := i - 1
      j := j - 1
   done
   return result
end

Ví dụ

#include<iostream>
using namespace std;
string addTwoBinary(string bin1, string bin2) {
   string result = "";
   int s = 0; //s will be used to hold bit sum
   int i = bin1.length() - 1, j = bin2.length() - 1; //traverse from LSb
   while (i >= 0 || j >= 0 || s == 1) {
      if(i >= 0)
         s += bin1[i] - '0';
      else
         s += 0;
      if(j >= 0)
         s += bin2[j] - '0';
      else
         s += 0;
      result = char(s % 2 + '0') + result;
      s /= 2; //get the carry
      i--; j--;
   }
   return result;
}
string add_n_binary(string arr[], int n) {
   string result = "";
   for (int i = 0; i < n; i++)
      result = addTwoBinary(result, arr[i]);
   return result;
}
main() {
   string arr[] = { "1011", "10", "1001" };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << add_n_binary(arr, n) << endl;
}

Đầu ra

10110