Pagini recente » Tembelizor | Cod sursa (job #2486968) | Homecoming | Cod sursa (job #3289430) | Cod sursa (job #1242966)
#include <cstdio>
#include <cstring>
FILE *in,*out;
using namespace std;
char op[4][4]={ "+-", "*/", "^", "" };
char s[100010];
char *t=s;
int eval(int prim, int doi, char o)
{
switch(o)
{
case '+': return prim+doi;
case '-': return prim-doi;
case '*': return prim*doi;
case '/': return prim/doi;
}
}
int expr (int semn)
{
int a,b;
if(semn == 2)
{
if(*t == '(')
{
++t;
a=expr(0);
++t;
}
else
{
for(a=0; *t>='0' && *t<='9'; ++t)
a = a * 10 + *t - '0';
}
}
else
for(a = expr(semn+1); strchr(op[semn], *t); a = b )
b = eval( a, expr(semn+1), *t++ );
return a;
}
int main()
{
in=fopen("evaluare.in", "rt");
fgets(s,100010, in);
fclose(in);
out=fopen("evaluare.out","wt");
fprintf(out,"%d ", expr(0));
fclose(out);
return 0;
}