#include #define nnum(num,n,len) (n>len?0:num[len-n]-'0') #define max(a,b) (a>b?a:b) #define min(a,b) (a1) a--; // int ln = max(max(ln1, ln2+1), a); int lnl= max(ln2+1, a); char buf[N]; sprintf(buf, "+%s", n2); printf("%*s\n", ln, n1); printf("%*s\n", ln, buf); for ( int i = 0; i < ln - lnl; i++ ) printf(" "); for ( int i = 0; i < lnl; i++ ) printf("-"); // printf("\n%*s\n", ln, n3+N1-a); } char *AddNum(char *n1,char *n2,char *n3,int mul10) { n3[N1]=0; n3[N2]='0'; // int ln1=strlen(n1); int ln2=strlen(n2); // int carry=0; int a; //printf("START AddNum [%s] [%s]\n",n1,n2); for(a=1;amul10) c2=nnum( n2 , a-mul10 , ln2 ); if(a>mul10) { int a1=a-mul10; c2=nnum( n2 , a1 , ln2 ); // printf("a=%d a-1=%d c2=%d\n (%s)",a,a1,c2,n2); } // int s=c1+c2+carry; carry=s/10; n3[N1-a]=s%10+'0'; // //printf("AddNum %d+%d=%d\n",c1,c2,s); } a--; while(n3[N1-a]=='0' && a>1) a--; // //printf("RESULT %s+%s(%d)=%s\n",n1,n2,mul10,n3+N1-a); return n3+N1-a; } void Sub(char *n1,char *n2) { char n3[N]; n3[N1]=0; n3[N2]='0'; // int ln1=strlen(n1); int ln2=strlen(n2); // int carry=0; int a; for(a=1;a1) a--; // int ln = max(max(ln1, ln2+1), a); int lnl= max(ln2+1, a); char buf[N]; sprintf(buf, "-%s", n2); printf("%*s\n", ln, n1); printf("%*s\n", ln, buf); for ( int i = 0; i < ln - lnl; i++ ) printf(" "); for ( int i = 0; i < lnl; i++ ) printf("-"); // printf("\n%*s\n", ln, n3+N1-a); } char *MulNum(char *n1,int n2,char *n3) { n3[N1]=0; n3[N2]='0'; // int ln1=strlen(n1); // int carry=0; int a; for(a=1;a1) a--; // return n3+N1-a; } void Mul(char *n1,char *n2) { char n3[N]; char *pn3; int firstmull = 0; // n3[N1]=0; n3[N2]='0'; // //int ln1=strlen(n1); int ln2=strlen(n2); // int a; // char n3bck[N]; n3bck[0]=0; for(a=1;a 1 ) { for ( int i = 0; i < ln - lnx; i++ ) printf(" "); for ( int i = 0; i < lnx; i++ ) printf("-"); printf("\n"); ///////////////////////////// // Once more // for(a=1;a