Pagini recente » Cod sursa (job #838184) | Cod sursa (job #1789680) | Cod sursa (job #2777139) | Cod sursa (job #2225412) | Cod sursa (job #1098494)
#include <stdio.h>
#include <string.h>
using namespace std;
char e[100002];
int i=0;
int lg;
bool eNumar()
{
if((e[i]>='0')&&(e[i]<='9')) return 1;
return 0;
}
int evalFact();
int evalExp();
int evalTermen();
int evalFact()
{
int r,nr=0;
if(e[i]=='(')
{
i++;
r=evalExp();
i++;
}
else if(eNumar())
{
while(eNumar())
{
nr=nr*10+(e[i]-'0');
i++;
}
r=nr;
}
return r;
}
int evalTermen()
{
int r=evalFact();
while((i<=lg)&&((e[i]=='*')||(e[i]=='/')))
{
if(e[i]=='*')
{
i++;
r=r*evalFact();
}
else if(e[i]=='/')
{
i++;
r=r/evalFact();
}
}
return r;
}
int evalExp()
{
int r=evalTermen();
while((i<=lg)&&((e[i]=='+')||(e[i]=='-')))
{
if(e[i]=='+')
{
i++;
r=r+evalTermen();
}
else
{
i++;
r=r-evalTermen();
}
}
return r;
}
int main()
{
int r;
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",e);
lg=strlen(e);
printf("%d", evalExp());
return 0;
}