Pagini recente » Cod sursa (job #2439708) | Cod sursa (job #155120) | Cod sursa (job #2874307) | Cod sursa (job #2643985) | Cod sursa (job #157679)
Cod sursa(job #157679)
#include <cstdio>
#define vv 1000005
char e[vv], *p;
inline int operatie(int x, int y, char c)
{
if (c=='+')
return x+y;
if (c=='-')
return x-y;
if (c=='*')
return x*y;
if (c=='/')
return x/y;
return -1;
}
inline int eval();
inline int factor()
{
int rez;
if (*p=='(')
{
p++;
rez=eval();
p++;
return rez;
}
for (rez=0; '0'<=*p && *p<='9'; p++)
rez=rez*10+*p-'0';
return rez;
}
inline int termen()
{
int rez=factor();
for (; *p=='*' || *p=='/';)
{
char op=*p;
p++;
rez=operatie(rez, factor(), op);
}
return rez;
}
inline int eval()
{
int rez=termen();
for (; *p=='+' || *p=='-';)
{
char op=*p;
p++;
rez=operatie(rez, termen(), op);
}
return rez;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s", e);
p=e;
printf("%d\n", eval());
return 0;
}