Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เพิ่ม n สตริงไบนารี?


ในโปรแกรมนี้เราต้องบวกเลขฐานสองที่ให้มา มีเลขฐานสอง n และเราต้องบวกทั้งหมดเพื่อให้เลขฐานสองหนึ่งเป็นผลลัพธ์

สำหรับสิ่งนี้ เราจะใช้ตรรกะการบวกเลขฐานสองและเพิ่มเงื่อนไขทั้งหมดตั้งแต่ 1 ถึง N ทีละรายการเพื่อให้ได้ผลลัพธ์

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

คำอธิบาย

วิธีที่ง่ายกว่าคือการแปลงสตริงไบนารีให้เทียบเท่าทศนิยม จากนั้นเพิ่มและแปลงเป็นไบนารีอีกครั้ง ที่นี่เราจะทำการเพิ่มเติมด้วยตนเอง เราจะใช้ฟังก์ชันตัวช่วยหนึ่งตัวเพื่อเพิ่มสตริงไบนารีสองตัว ฟังก์ชันนั้นจะถูกใช้สำหรับ n-1 ครั้งสำหรับ n สตริงไบนารีที่แตกต่างกัน

ตัวอย่าง

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