Pagini recente » Cod sursa (job #1945167) | Cod sursa (job #3242070) | Cod sursa (job #2770346) | Cod sursa (job #1429696) | Cod sursa (job #305257)
Cod sursa(job #305257)
#include<stdio.h>
#include<string.h>
#define nmax 100001
int eval(int,int,char);
int expr(int);
char op[4][4]={"+-","*/","^",""},s[nmax];
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(s,nmax,stdin);
printf("%d\n",expr(0));
return 0;
}
int eval(int a,int b,char t){
if(t=='+')return a+b;
if(t=='-')return a-b;
if(t=='*')return a*b;
if(t=='/')return a/b;
}
int expr(int t){
int x,y;
char *p=s;
if(t==2)
if(*p=='('){
p++;
x=expr(0);
p++;
}
else
for(x=0;*p>='0'&&*p<='9';p++)
x=x*10+*p-'0';
else
for(x=expr(t+1);strchr(op[t],*p);x=y)
y=eval(x,expr(t+1),*p++);
return x;
}