#include #include #include #include #define MAX(a,b) ( (a>b) ? a : b ) #define MAXN 1100 int A[MAXN+1], B[MAXN+1]; int la,lb,lc,lacum; char op; int len(int *a) { return a[MAXN]; } void chars(int n, char c) { int i; for (i=0;i=0; k++,j--) A[k]=(int)s[j]-(int)'0'; A[MAXN]=k; for (k=0, j=strlen(s)-1; j>i; k++,j--) B[k]=(int)s[j]-(int)'0'; B[MAXN]=k; op=s[i]; } void Pisc(int *a) { int i; for (i=len(a)-1;i>=0;i--) printf("%d",a[i]); printf("\n"); } void Pis3(int *A, int *B, int *C, char op) { int l,l2; l2=len(A); l2=MAX(l2, len(B)+1 ); l=MAX(l2, len(C)); chars(l-len(A),' '); Pisc(A); chars(l-len(B)-1,' '); printf("%c",op); Pisc(B); chars(l-l2,' '); chars(l2,'-'); printf("\n"); chars(l-len(C),' '); Pisc(C); } void Plus() { int C[MAXN+1]; int i,z,q,qq; qq=1; q=MAX(len(A),len(B))+1; for (i=0;i=len(A)) A[i]=0; if (i>=len(B)) B[i]=0; C[i]=A[i]+B[i]+z; z=C[i] / 10; C[i]=C[i] % 10; if (C[i]!=0) qq=i+1; } C[MAXN]=qq; Pis3(A,B,C,'+'); } void Plus2(int *a, int *b) { int i,z,q,qq; qq=1; q=MAX(len(a),len(b))+1; for (z=0, i=0;i=len(a)) a[i]=0; if (i>=len(b)) b[i]=0; b[i]=a[i]+b[i]+z; z=b[i] / 10; b[i]=b[i] % 10; if (b[i]!=0) qq=i+1; } b[MAXN]=qq; } void Shift(int *a, int s) { int i; for (i=len(a)+s-1;i>=s;i--) a[i]=a[i-s]; if (s==0) return; for (i=s-1;i>=0;i--) a[i]=0; a[MAXN]+=s; } void Minus() { int C[MAXN+1]; int i,z; for (i=0;i