在 C++ 中新增 n 個二進位制字串?
我們將在本文中展示如何編寫一個程式,該程式可以新增 n 個給定為字串的二進位制數字。更簡單的方法是將二進位制字串轉換為其十進位制等價形式,然後相加並再次轉換為二進位制形式。本文中,我們將手動執行加法。
我們將使用一個輔助函式來新增兩個二進位制字串。該函式將被用於 n-1 次的不同 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
示例
#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; }
輸出
10110
廣告