Pagini recente » Cod sursa (job #1926544) | Cod sursa (job #3207569) | Cod sursa (job #737853) | Cod sursa (job #1462548) | Cod sursa (job #1374235)
#include <cstdio>
#include <cstring>
using namespace std;
int n, i, j;
char s[100002];
int eval();
int EvaluareExpresie();
int EvaluareFactor();
int EvaluareTermen();
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(s,100001,stdin);
n=strlen(s);
printf("%d\n",EvaluareExpresie());
return 0;
}
int eval()
{
int f=0;
j=i;
while(s[j]>='0'&&s[j]<='9')
{
f=f*10+s[j]-'0';
j++;
}
return f;
}
int EvaluareFactor()
{
int f=0;
if(s[i]=='(')
{
i++;
f=EvaluareExpresie();
i++;
}
else
{
f=eval();
i=j;
}
return f;
}
int EvaluareTermen()
{
int f=EvaluareFactor();
while(i<n&&(s[i]=='*'||s[i]=='/'))
{
if(s[i]=='*') { i++; f*=EvaluareFactor();}
else { i++; f/=EvaluareFactor();}
}
return f;
}
int EvaluareExpresie()
{
int t=EvaluareTermen();
while(i<n&&(s[i]=='+'||s[i]=='-'))
{
if(s[i]=='+') { i++; t+=EvaluareTermen();}
else { i++; t-=EvaluareTermen();}
}
return t;
}