Pagini recente » Cod sursa (job #3204719) | Cod sursa (job #1328037) | Cod sursa (job #98902) | Cod sursa (job #1796900) | Cod sursa (job #808981)
Cod sursa(job #808981)
#include <cstring>
#include <cstdio>
#define LMAX 2
#define DIM 100010
char op[4][4]={"+-","*/","^",""};
char s[DIM], *p=s;
int eval(int a, int b, char c)
{ switch (c) {
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
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() {
fgets(s, DIM, fopen("evaluare.in","r"));
fprintf(fopen("evaluare.out","w"), "%d\n", expr(0) );
return 0; }