Pagini recente » Cod sursa (job #1027866) | Cod sursa (job #2037199) | Cod sursa (job #2435992) | Cod sursa (job #1233645) | Cod sursa (job #290787)
Cod sursa(job #290787)
#include<stdio.h>
#include<string.h>
char op[4][4]={"+-","*/","^",""},s[100100],*p=s;
int eval(int a,int b,char o){
switch (o){
case '+':return a+b;
case '-':return a-b;
case '*':return a*b;
case '/':return a/b;
}
}
int expr(int lvl){
int x,y;
if(lvl==2)
if(*p=='(')
p++,x=expr(0),p++;
else
for(x=0;'0'<=*p&&*p<='9';p++)
x=x*10+*p-'0';
else
for(x=expr(lvl+1);strchr(op[lvl],*p);x=y)
y=eval(x,expr(lvl+1),*p++);
return x;}
int main(){
freopen("evaluare.out","w",stdout);
fgets(s,100100,freopen("evaluare.in","r",stdin));
printf("%d",expr(0));
return 0;}