Pagini recente » Cod sursa (job #1091986) | Cod sursa (job #668361) | Cod sursa (job #3002035) | Borderou de evaluare (job #3146070) | Cod sursa (job #1088665)
#include <cstdio>
using namespace std;
char S[100001], *p;
int eval();
int factor();
int termen();
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(S);
p=S;
printf("%d\n", eval() );
return 0;
}
int eval()
{
int r=termen();
while (*p=='+' || *p=='-')
if (*p=='+')
{
p++;
r+=termen();
}
else
{
p++;
r-=termen();
}
return r;
}
int termen()
{
int r=factor(),x;
while (*p=='*' || *p=='/')
if (*p=='*') {p++;r*=factor();}
else {p++;x=factor();if (x) r/=x;}
return r;
}
int factor()
{
int r=0;
if (*p=='(')
{
p++;
r=eval();
p++;
}
else while (*p>='0' && *p<='9') r=r*10+(*p-'0'),p++;
return r;
}