Pagini recente » Cod sursa (job #1139904) | Cod sursa (job #2266517) | Cod sursa (job #1286552) | Cod sursa (job #2641921) | Cod sursa (job #1193428)
#include <cstdio>
#define Nmax 100010
using namespace std;
char s[Nmax],*p;
int termen();
int factor();
int nr();
int eval()
{
int r=termen();
while (*p=='+' || *p=='-')
if (*p=='+') ++p, r+=termen();
else ++p, r-=termen();
return r;
}
int termen()
{
int r=factor();
while (*p=='*' || *p=='/')
if (*p=='*') ++p, r*=factor();
else ++p, r/=factor();
return r;
}
int factor()
{
int r;
if (*p=='(') ++p, r=eval(), ++p;
else r=nr();
return r;
}
int nr()
{
int r=0;
while('0'<=*p && *p<='9')
{
r*=10;
r+=(int)*p-'0';
++p;
}
return r;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s+1);
p=s+1;
printf("%d\n", eval());
return 0;
}