#include<stdio.h> #include<string.h> int c(int m,int n,char a[1000]) { int i=m+1,j,sum,k; if(a[i]=='+') {sum=0; for(j=i+1;j<n;j++) if(a[j]>='0'&&a[j]<='9') sum+=a[j]-'0'; } if(a[i]=='-') { sum=a[i+2]-'0'; for(k=i+3;k<n;k++) {if(a[k]>='0'&&a[k]<='9') sum-=a[k]-'0'; } } if(a[i]=='*') {sum=1; for(j=i+1;j<n;j++) if(a[j]>='0'&&a[j]<='9') sum*=(a[j]-'0'); } if(a[i]=='/') { sum=a[i+2]-'0'; for(k=i+3;k<n;k++) {if(a[k]>='0'&&a[k]<='9') sum/=(a[k]-'0'); } } //printf("%d ",sum); return sum; } int main() { int i,j,a[100],flag[100],b[100],k=0,d[100],l=0,sum=0; char s[1000]; gets(s); memset(a,0,sizeof(a)); memset(flag,0,sizeof(flag)); memset(d,0,sizeof(d)); for(i=0;s[i]!='\0';i++) { if(s[i]=='(') a[i]=1; if(s[i]==')') a[i]=-1; } /*for(i=0;i<100;i++) { if(a[i]) {printf("%d ",i); printf("%d\n",a[i]); }}*/ for(i=0;i<100;i++) { if(a[i]<0) { for(j=i;j>=0;j--) { if(!flag[j]&&a[j]>0) { b[k++]=j; b[k++]=i; flag[j]=1; break; } } } } /*for(i=0;i<k;i++) printf("%d ",b[i]); printf("\n");*/ for(i=0;i<k-2;i=i+2) { d[l++]=c(b[i],b[i+1],s); } //for(i=0;i<l;i++) //printf("%d ",d[i]); if(s[1]=='+') for(i=0;i<l;i++) sum+=d[i]; sum+=2; printf("%d",sum); } |
Double click to view unformatted code.