#include #define MAX 512 #define max(p,q) ((p)>(q)?(p):(q)) void printn(int l,char *str) { int i,j; for (i=0; str[i]; i++); for (j=0; j=0; i--) printf("%c",str[i]); printf("\n"); } void prints(int l,char sg,char *str) { int i,j; for (i=0; str[i]; i++); for (j=0; j=0; i--) printf("%c",str[i]); printf("\n"); } void printd(int l,int ll) { int j; for (j=0; j=0; ll--) printf("-"); printf("\n"); } char input[1024]; char prvni[MAX],druhe[MAX],vysledek[MAX],mezivysl[MAX][MAX]; int vysl[MAX]; char op,*c; int zadani; int lp,ld,lv,lw,lw0; int main() { int i,j,k,l,m,n; scanf("%d",&zadani); while(zadani--) { scanf("%s",input); for (i=0; input[i]!='+'&&input[i]!='-'&&input[i]!='*'; i++); op=input[i]; for (j=0, k=i-1; k>=0; k--) prvni[j++]=input[k]; lp=j; prvni[j]=0; for (; input[i]; i++); for (j=0, i--; input[i]!='+'&&input[i]!='-'&&input[i]!='*'; i--) druhe[j++]=input[i]; ld=j; druhe[j]=0; switch (op) { case '+': for (i=0, k=0; prvni[i]&&druhe[i]; i++) { j=k; if (prvni[i]) { j+=prvni[i]-'0'; } else prvni[i+1]=0; if (druhe[i]) { j+=druhe[i]-'0'; } else druhe[i+1]=0; if (j>=10) { k=1; j-=10; } else k=0; vysledek[i]=j+'0'; } if (k) vysledek[i++]=k+'0'; lv=i; vysledek[i]=0; l=max(lv,max(lp,ld+1)); printn(l,prvni); prints(l,'+',druhe); printd(l,l); printn(l,vysledek); break; case '-': for (i=0, k=0; prvni[i]&&druhe[i]; i++) { j=k; if (prvni[i]) { j+=prvni[i]-'0'; } else prvni[i+1]=0; if (druhe[i]) { j-=druhe[i]-'0'; } else druhe[i+1]=0; if (j<0) { k=-1; j+=10; } else k=0; vysledek[i]=j+'0'; } while (i>1&&vysledek[i-1]=='0') i--; lv=i; vysledek[i]=0; l=max(lv,max(lv,ld+1)); printn(l,prvni); prints(l,'-',druhe); printd(l,l); printn(l,vysledek); break; case '*': for (i=0; i1&&vysledek[i-1]=='0') i--; lv=i; vysledek[i]=0; l=max(lv,max(lp,ld+1)); printn(l,prvni); prints(l,'*',druhe); if (ld==1) { printd(l,l); } else { printd(l,max(max(lp,ld+1),lw0)); for (i=0; i