배열이 나타내는 숫자는 숫자의 각 자릿수가 배열의 요소로 표현되는 형식으로 저장됩니다. 예를 들어,
Number 234 in array is {2,3,4}.
이러한 숫자에 더하기 위해 먼저 최하위 자릿수에 숫자를 추가하고 합이 10보다 크면 캐리를 전파합니다. 그런 다음 동일한 절차를 수행하고 합계를 찾는 배열의 다음 연속 숫자로 이동합니다.
두 개의 숫자를 더하는 예를 들어 보겠습니다 -
a = {2,9, 6} b = {6, 3, 8} Output: 934
설명 − 캐리를 전파하는 숫자의 최하위 숫자, 즉 6+8 =14를 추가한 다음 동일한 9+3+1 =13에 대해 캐리를 다음으로 다시 전파합니다. 다음 합은 2+6+1 =9가 됩니다. 합은 934가 됩니다.
알고리즘
배열로 저장된 숫자의 합을 찾기 위해. 우리는 먼저 숫자가 더 많은 자릿수를 가지고 있는지 확인할 것입니다. 그렇다면 우리는 더 작은 숫자의 자릿수까지 합을 찾은 다음 더 큰 숫자의 자릿수를 더할 것입니다.
또한, 합계에서 발생할 수 있고 전달해야 하는 캐리를 추적하는 캐리 번호를 확인할 것입니다. 처음에는 0이 되고 모든 합계 반복 전에 0이 됩니다. 숫자의 합을 하나씩 찾아 배열에 저장하고 출력합니다.
예시
#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; }
출력
The sum is 607