Pagini recente » Cod sursa (job #743029) | Cod sursa (job #1258298) | Cod sursa (job #1699528) | Cod sursa (job #398883) | Cod sursa (job #516635)
Cod sursa(job #516635)
#include <stdio.h>
#include <string.h>
const int nmax = 100010;
const int LMAX = 2;
char op[4][4] = {"+-","*/","",""};
char S[nmax];
char *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;
}
return 0;
}
int expr(int lev)
{
int x, y;
if(lev == LMAX)
if(*p == '(')
{
p++;
x = expr(0);
p++;
}
else
for(x = 0; *p <= '9' && *p >= '0'; p++)
x = x * 10 + *p - '0';
else
for(x = expr(lev + 1); strchr(op[lev], *p); x = y)
y = eval(x, expr(lev + 1), *p++);
return x;
}
int main()
{
freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
fgets(S, nmax, stdin);
printf("%d\n",expr(0));
}