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

การบวก n สตริงฐานสอง


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

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

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

คำอธิบาย

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

ตัวอย่างโค้ด C++

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