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

Chương trình thêm hai chuỗi nhị phân trong C ++


Cho hai chuỗi có số nhị phân, chúng ta phải tìm kết quả nhận được bằng cách cộng hai chuỗi nhị phân đó và trả về kết quả là một chuỗi nhị phân.

Số nhị phân là những số được biểu thị bằng 0 hoặc 1. Trong khi cộng 2 số nhị phân, quy tắc cộng nhị phân cần được lưu ý.

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

Chương trình thêm hai chuỗi nhị phân trong C ++

Đầu vào

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

Đầu ra

“100”

Đầu vào

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

Đầu ra

“111”

Phương pháp được sử dụng dưới đây như sau để giải quyết vấn đề

  • Duyệt qua cả chuỗi từ cuối cùng

  • Thêm số nhị phân của hai số

  • Nếu có hai số 1 thì biến nó thành số 0 và mang số 1.

  • Trả lại kết quả.

Thuật toán

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

Ví dụ

#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;
}

Đầu ra

Nếu chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

sum of strings are : 110001