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

Tổng hai số khi một số biểu diễn bằng mảng chữ số trong C++

Cho số nguyên n và mảng m[] biểu diễn số lớn (m[0] là chữ số hàng cao nhất). Tính n + m[] lưu lại vào m[].

Ví dụ

n = 213, m = [1,5,8] → 213 + 158 = 371 → m = [3,7,1]

Thuật toán

  • Duyệt m từ cuối (chữ số hàng đơn vị).
  • Cộng n%10 + m[i] + carry.
  • Cập nhật m[i] = sum%10, carry = sum/10, n /= 10.
  • Cuối cùng nếu carry > 0, cần mở rộng mảng (code gốc không xử lý, giả định m đủ lớn).

Code C++

#include <iostream>
using namespace std;

void addNumberToArray(int n, int m[], int size) {
    int carry = 0;
    for (int i = size-1; i >= 0; i--) {
        int sum = (n % 10) + m[i] + carry;
        n /= 10;
        carry = sum / 10;
        m[i] = sum % 10;
    }
    // Nếu n>0 hoặc carry>0 thì cần xử lý mở rộng mảng (bỏ qua ở đây)
}

int main() {
    int n = 679;
    int m[] = {1, 9, 5, 7, 1, 9}; // 195719
    int sz = sizeof(m)/sizeof(m[0]);
    addNumberToArray(n, m, sz);
    for (int i = 0; i < sz; i++) cout << m[i]; // 196398
    return 0;
}

Kết quả

196398

(679 + 195719 = 196398)

Lưu ý: Code giả định mảng m đủ lớn chứa kết quả. Cần vector nếu không biết trước kích thước.