Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

n개의 바이너리 문자열을 추가하시겠습니까?

<시간/>

이 프로그램에서는 주어진 이진수를 더해야 합니다. n개의 이진수가 있으며 출력으로 하나의 이진수를 제공하려면 모두 더해야 합니다.

이를 위해 이진 덧셈 논리를 사용하고 1에서 N까지의 모든 항을 하나씩 추가하여 결과를 얻습니다.

Input: "1011", "10", "1001"
Output: 10110

설명

더 쉬운 방법은 이진 문자열을 해당하는 십진수로 변환한 다음 추가하고 다시 이진으로 변환하는 것입니다. 여기서는 수동으로 추가를 수행합니다. 하나의 도우미 함수를 사용하여 두 개의 이진 문자열을 추가합니다. 이 함수는 n개의 다른 바이너리 문자열에 대해 n-1번 사용됩니다.

예시

#include<iostream>
using namespace std;
string add(string b1, string b2) {
   string res = "";
   int s = 0;
   int i = b1.length() - 1, j = b2.length() - 1;
   while (i >= 0 || j >= 0 || s == 1) {
      if(i >= 0) {
         s += b1[i] - '0';
      } else {
         s += 0;
      }
      if(j >= 0) {
         s += b2[j] - '0';
      } else {
         s += 0;
      }
      res = char(s % 2 + '0') + res;
      s /= 2;
      i--; j--;
   }
   return res;
}
string addbinary(string a[], int n) { string res = "";
   for (int i = 0; i < n; i++) {
      res = add(res, a[i]);
   }
   return res;
}
int main() {
   string arr[] = { "1011", "10", "1001" };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << addbinary(arr, n) << endl;
}