Pagini recente » Cod sursa (job #1408014) | Cod sursa (job #92615) | Cod sursa (job #37351) | Cod sursa (job #1414513) | Cod sursa (job #398283)
Cod sursa(job #398283)
#include<stdlib.h>
#include<cstdio>
#define lmax 100010
int poz=1;
char v[lmax];
int expr();
int termen();
int eval()
{
int rez = termen();
while (v[poz] == '+' || v[poz] =='-')
{
if (v[poz] == '+')
{
poz++;
rez += termen();
}
if (v[poz] == '-')
{
poz++;
rez -= termen();
}
}
return rez;
}
int termen()
{
int rez = expr();
while (v[poz] == '*' || v[poz] == '/' )
{
if (v[poz] == '*')
{
poz++;
rez *= expr();
}
if (v[poz] == '/')
{
poz++;
rez /= expr();
}
}
return rez;
}
int expr()
{
int rez=0;
if (v[poz] == '(')
{
poz++;
rez = eval();
poz++;
}
else
while (v[poz] >= '0' && v[poz] <= '9')
{
rez = rez*10 + v[poz] - '0';
poz++;
}
return rez;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(v+1,lmax,stdin);
printf("%d",eval());
return 0;
}