Pagini recente » Cod sursa (job #2212339) | Cod sursa (job #1706749) | Cod sursa (job #3240317) | Cod sursa (job #328745) | Cod sursa (job #1581892)
#include <cstdio>
#include <cstring>
#define LMAX 2
#define NX 100010
char op[4][4] = { "+-", "*/", "^", "" };
char s[NX],*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 lev)
{
int x,y;
if(lev==LMAX){
if(*p=='(')
++p,x=expr(0),++p;
else{
x=0;
while(*p>='0'&&*p<='9'){
x=x*10+*p-'0';
++p;
}
}
}
else
for(x=expr(lev+1);strchr(op[lev],*p);x=y)
y=eval(x,expr(lev+1),*p++);
return x;
}
int main ()
{
fgets( s, NX, fopen( "evaluare.in", "r" ) );
fprintf( fopen( "evaluare.out", "w" ), "%d\n", expr(0) );
}