#include <stdio.h> #include <string.h> //(* 2 (* 3 4) (* 3 5)) //(+ 2 (* 3 4) (+ 3 5)) int fun(char s[100],int start,int end){ if(s[start+1]=='*'){ int sum=1; for(int i=start+3;i<=end;i++){ if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum*=j; }else if(s[i]=='('){ int k=i+1,count=1; while(count!=0){ if(s[k]==')'){ count--; }else if(s[k]=='('){ count++; } k++; } sum*= fun(s,i,k-1); i=k; } } return sum; }else if(s[start+1]=='/'){ int sum,i=start+3; if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum=j; i=i+1; }else if(s[i]=='('){ int k=i+1,count=1; while(count!=0){ if(s[k]==')'){ count--; }else if(s[k]=='('){ count++; } k++; } sum = fun(s,i,k-1); i=k+1; } for(;i<=end;i++){ if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum/=j; }else if(s[i]=='('){ int j=i+1,count=1; while(count!=0){ if(s[j]==')'){ count--; }else if(s[j]=='('){ count++; } j++; } sum/= fun(s,i,j-1); i=j; } } return sum; }else if(s[start+1]=='+'){ int sum=0; for(int i=start+3;i<=end;i++){ if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum+=j; }else if(s[i]=='('){ int k=i+1,count=1; while(count!=0){ if(s[k]==')'){ count--; }else if(s[k]=='('){ count++; } k++; } sum+= fun(s,i,k-1); i=k; } } return sum; }else if(s[start+1]=='-'){ int sum,i=start+3; if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum=j; i=i+1; }else if(s[i]=='('){ int k=i+1,count=1; while(count!=0){ if(s[k]==')'){ count--; }else if(s[k]=='('){ count++; } k++; } sum = fun(s,i,k-1); i=k+1; } for(;i<=end;i++){ if(s[i]>='0'&&s[i]<='9'){ int j=s[i]-'0'; while(s[++i]!=' '&&s[i]!=')'){ j=j*10+s[i]-'0'; } sum-=j; }else if(s[i]=='('){ int j=i+1,count=1; while(count!=0){ if(s[j]==')'){ count--; }else if(s[j]=='('){ count++; } j++; } sum -= fun(s,i,j-1); i=j; } } return sum; } } int main(){ char s[100]; gets(s); int result = fun(s,0,strlen(s)-1); printf("%d\n",result); } |
Double click to view unformatted code.