I am using this function with my ADT Natural number in large precision

(My DT is

)Code:struct NatNo{ unsigned n; //number of digits unsigned V[30]; // array of digits in order of introduction ( starting from 0) }

Code:void add(NatNo a, NatNo b, NatNo &sum) { unsigned i; unsigned maxlength= a.n>b.n? a.n: b.n; init(sum, maxlenght); /* initializes sum with maxlength elements of 0 (s.n=maxlength and the array(s.V) with zero values ) */ for(i=a.n;i<maxlength;i++) a.V[i]=0; for(i=b.n;i<maxlength;i++) b.V[i]=0; for(i=maxlength-1;i>=0;i--); { sum.V[i+1] += (a.V[i] + b.V[i]) % 10; /* the sum will have an additional digit(pozition 0) for overflow */ sum.V[i] += (a.V[i] + b.V[i]) / 10; // transportation } }