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

Cộng hai số biểu diễn bằng mảng trong C

Biểu diễn số bằng mảng

Mỗi chữ số là một phần tử mảng. Ví dụ: 234 → {2,3,4}.

Ví dụ

a = {2,9,6}, b = {6,3,8}
Cộng từ cuối: 6+8=14 (ghi 4, nhớ 1)
9+3+1=13 (ghi 3, nhớ 1)
2+6+1=9
Kết quả: 934

Thuật toán

  • Kiểm tra mảng nào dài hơn
  • Cộng từ cuối (chữ số ít nghĩa nhất) về đầu
  • Xử lý nhớ (carry)
  • Nếu mảng dài hơn, cộng tiếp phần còn lại với nhớ

Mã nguồn C++

#include <iostream>
using namespace std;

void Sum(int a[], int b[], int n, int m) {
    int sum[n];
    int i = n-1, j = m-1, k = n-1;
    int carry = 0, s = 0;
    while (j >= 0) {
        s = a[i] + b[j] + carry;
        sum[k] = s % 10;
        carry = s / 10;
        i--; j--; k--;
    }
    while (i >= 0) {
        s = a[i] + carry;
        sum[k] = s % 10;
        carry = s / 10;
        i--; k--;
    }
    for (int i = 0; i < n; i++) cout << sum[i];
}

int main() {
    int a[] = {5,6,9};
    int b[] = {3,8};
    int n = sizeof(a)/sizeof(a[0]);
    int m = sizeof(b)/sizeof(b[0]);
    cout << "Tổng = ";
    if (n >= m) Sum(a, b, n, m);
    else Sum(b, a, m, n);
    return 0;
}

Kết quả

Tổng = 607