Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Cộng 2 mảng với ràng buộc tách chữ số trong C++

Cộng 2 mảng phần tử theo chỉ số, ràng buộc:

  1. Cộng từ chỉ số 0
  2. Nếu tổng ≥ 10, tách từng chữ số
  3. Phần tử dư của mảng dài hơn thêm vào kết quả (cũng tách nếu ≥10)

Ví dụ

arr1 = {9323, 8, 6, 55, 25, 6}

arr2 = {38, 11, 4, 7, 8, 7, 6, 99}

Kết quả: 9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9

Chương trình

#include <iostream>
#include <vector>
using namespace std;

void splitDigits(int num, vector<int> &out) {
    vector<int> tmp;
    while (num) { tmp.insert(tmp.begin(), num % 10); num /= 10; }
    out.insert(out.end(), tmp.begin(), tmp.end());
}

void addArrays(int a[], int b[], int m, int n) {
    vector<int> out;
    int i = 0;
    
    while (i < m && i < n) {
        int sum = a[i] + b[i];
        if (sum < 10) out.push_back(sum);
        else splitDigits(sum, out);
        i++;
    }
    while (i < m) splitDigits(a[i++], out);
    while (i < n) splitDigits(b[i++], out);
    
    for (int x : out) cout << x << " ";
}

int main() {
    int a[] = {9323, 8, 6, 55, 25, 6};
    int b[] = {38, 11, 4, 7, 8, 7, 6, 99};
    addArrays(a, b, 6, 8);
    return 0;
}

Kết quả

9 3 6 1 1 9 1 0 6 2 3 3 1 3 6 9 9