Pagini recente » Cod sursa (job #1374713) | Cod sursa (job #1446534) | Cod sursa (job #1855185) | Cod sursa (job #3132842) | Cod sursa (job #2373166)
#include <bits/stdc++.h>
using namespace std;
char s[100005], pr[4][4]={"+-", "*/", "^", ""}, *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 lvl)
{
int x, y;
if(lvl==2)
{
if(*p=='(')
{
p++;
x=expr(0);
p++;
}
else for(x=0; *p>='0' && *p<='9'; p++)
x=x*10+*p-'0';
}
else for(x=expr(lvl+1); strchr(pr[lvl], *p); x=y)
y=eval(x, expr(lvl+1), *p++);
return x;
}
int main()
{
fgets(s, 100005, fopen("evaluare.in", "r"));
fprintf(fopen("evaluare.out", "w"), "%d\n", expr(0));
return 0;
}