# include <stdio.h> # include <string.h> void f(char b[1000]) { int i=0,j,n,t=0,s,f,a[10000],m,l,num; char d,c[10000]; while(1) { if(b[i]==')') { for(j=i-1,t=0;b[j]!='(';j--) c[t++]=b[j]; i=j; d=b[j+1]; for(j=t-2,t=0,f=0;j>=0;j--) { if(c[j]==' ') { if(f==1) { if(l==1) a[t++]=-s; else a[t++]=s; } f=1; s=0; l=0; } else { if(c[j]=='-') l=1; else s=s*10+c[j]-'0'; } } if(l==1) a[t++]=-s; else a[t++]=s; for(i=1,s=a[0];i<t;i++) if(d=='+') s=s+a[i]; else if(d=='-') s=s-a[i]; else if(d=='*') s=s*a[i]; else if(d=='/') s=s/a[i]; if (s>0) { t=0;m=0;num=0; while(s>0) { if(s%10==0) num++; m=m*10+s%10; s=s/10; } while(m>0) { b[t++]=m%10+'0'; m=m/10; } while(num--) b[t++]='0'; b[t]='\0'; break; } else if(s==0) { b[0]='0'; b[1]='\0'; break; } else { s=-s; t=1;m=0;num=0; while(s>0) { if(s%10==0) num++; m=m*10+s%10; s=s/10; } b[0]='-'; while(m>0) { b[t++]=m%10+'0'; m=m/10; } while(num--) b[t++]='0'; b[t]='\0'; break; } } else i++; } } main() { int i,j,x,n,t; char a[1000],b[1000]; gets(a); while(1) { n=strlen(a); for(j=0;j<n;j++) if(a[j]==')') break; if(j==n) break; for(i=j;;i--) if(a[i]=='(') break; for(t=0,x=i;x<=j;x++) b[t++]=a[x]; b[t]='\0'; f(b); for(x=0;b[x]!='\0';x++) a[i++]=b[x]; for(x=j+1;a[x]!='\0';x++) a[i++]=a[x]; a[i]='\0'; } puts(a); } |
Double click to view unformatted code.