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

C++에서 두 개의 바이너리 문자열을 추가하는 프로그램


2진수가 있는 두 개의 문자열이 주어지면 이 두 개의 이진 문자열을 더한 결과를 찾고 결과를 이진 문자열로 반환해야 합니다.

2진수는 0 또는 1로 표현되는 숫자입니다. 2개의 2진수를 더할 때 주의해야 할 이진수 덧셈 규칙이 있습니다.

0+0 → 0
0+1 → 1
1+0 → 1
1+1 → 0, carry 1

C++에서 두 개의 바이너리 문자열을 추가하는 프로그램

입력

str1 = {“11”}, str2 = {“1”}

출력

“100”

입력

str1 = {“110”}, str2 = {“1”}

출력

“111”

문제를 해결하기 위해 다음과 같은 접근 방식을 사용합니다.

  • 마지막에서 두 문자열 모두 순회

  • 두 숫자의 이진수 더하기

  • 1이 두 개 있으면 0으로 만들고 1을 나릅니다.

  • 결과를 반환합니다.

알고리즘

Start
Step 1→ declare function to add two strings
   string add(string a, string b)
      set string result = ""
      set int temp = 0
      set int size_a = a.size() – 1
      set int size_b = b.size() – 1
      While (size_a >= 0 || size_b >= 0 || temp == 1)
         Set temp += ((size_a >= 0)? a[size_a] - '0': 0)
         Set temp += ((size_b >= 0)? b[size_b] - '0': 0)
         Calculate result = char(temp % 2 + '0') + result
         Set temp /= 2
         Set size_a—
         Set size_b—
      End
      return result
Step 2→ In main()
   Declare string a = "10101", b="11100"
   Call add(a, b)
Stop
호출

예시

#include<bits/stdc++.h>
using namespace std;
//function to add two strings
string add(string a, string b){
   string result = "";
   int temp = 0;
   int size_a = a.size() - 1;
   int size_b = b.size() - 1;
   while (size_a >= 0 || size_b >= 0 || temp == 1){
      temp += ((size_a >= 0)? a[size_a] - '0': 0);
      temp += ((size_b >= 0)? b[size_b] - '0': 0);
      result = char(temp % 2 + '0') + result;
      temp /= 2;
      size_a--; size_b--;
   }
   return result;
}
int main(){
   string a = "10101", b="11100";
   cout<<"sum of strings are : "<<add(a, b);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

sum of strings are : 110001