Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그램에서 두 개의 배열로 표시되는 두 개의 숫자 추가

<시간/>

배열이 나타내는 숫자는 숫자의 각 자릿수가 배열의 요소로 표현되는 형식으로 저장됩니다. 예를 들어,

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