Computer >> Máy Tính >  >> Lập trình >> lập trình C

Thêm hai số được đại diện bởi hai mảng trong Chương trình C

Một số được đại diện bởi mảng được lưu trữ ở dạng sao cho mỗi chữ số của số được biểu diễn bằng một phần tử của mảng. Ví dụ:

Number 234 in array is {2,3,4}.

Để thêm vào những số như vậy, trước tiên, chúng ta sẽ thêm số có ít nhất là chữ số có nghĩa và nếu tổng lớn hơn 10 sẽ truyền tải. Sau đó, chúng ta sẽ đi đến các chữ số liên tiếp tiếp theo của mảng, thực hiện quy trình tương tự và tìm tổng.

Hãy lấy một ví dụ để thêm hai số -

a = {2,9, 6}
b = {6, 3, 8}
Output: 934

Giải thích - Chúng tôi sẽ thêm chữ số có nghĩa nhỏ nhất của số, tức là 6 + 8 =14 sẽ truyền cho một mang và sau đó cho 9 + 3 + 1 =13 tương tự sẽ truyền lại cho tiếp theo. Tổng tiếp theo sẽ là 2 + 6 + 1 =9. Điều này sẽ làm cho tổng =934.

Thuật toán

Để tìm tổng các số được lưu trữ dưới dạng mảng. Trước tiên, chúng tôi sẽ kiểm tra xem có số nào có nhiều chữ số hơn không. Nếu có thì chúng ta sẽ tìm tổng cho đến các chữ số của số nhỏ hơn và sau đó cộng các chữ số của số lớn hơn.

Ngoài ra, chúng tôi sẽ kiểm tra một số mang theo để theo dõi số mang có thể phát sinh trong tổng và cần được chuyển tiếp, ban đầu nó sẽ bằng 0 và cũng bằng 0 trước mỗi lần lặp tổng. Lần lượt chúng ta sẽ tìm tổng các số và lưu trữ thành mảng rồi in ra.

Ví dụ

#include <iostream>
using namespace std;
int Sum(int a[], int b[], int n, int m){
   int sum[n];
   int i = n - 1, j = m - 1, k = n - 1;
   int c = 0, s = 0;
   while (j >= 0) {
      s = a[i] + b[j] + c;
      sum[k] = (s % 10);
      c = s / 10;
      k--;
      i--;
      j--;
   }
   while (i >= 0) {
      s = a[i] + c;
      sum[k] = (s % 10);
      c = s / 10;
      i--;
      k--;
   }
   for (int i = 0; i <= n-1; 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<<"The sum is ";
   if (n >= m)
      Sum(a, b, n, m);
   else
      Sum(b, a, m, n);
   return 0;
}

Đầu ra

The sum is 607