Pagini recente » Cod sursa (job #743777) | Cod sursa (job #3164907) | Cod sursa (job #674878) | Cod sursa (job #1136750) | Cod sursa (job #546325)
Cod sursa(job #546325)
#include <cstdio>
#define infile "evaluare.in"
#define outfile "evaluare.out"
#define MaxN 100005
char s[MaxN];
int N;
int eval();
int termen();
int factor();
int eval()
{
int r=termen();
while(s[N]=='+' || s[N]=='-')
{
if(s[N]=='+')
{
N++;
r+=termen();
}
else
{
N++;
r+=termen();
}
}
return r;
}
int termen()
{
int r=factor();
while(s[N]=='*' || s[N]=='/')
{
if(s[N]=='*')
{
N++;
r*=factor();
}
else
{
N++;
r/=factor();
}
}
return r;
}
int factor()
{
int r=0;
if(s[N]=='(')
{
N++;
r=eval();
N++;
}
else
{
while(s[N]>='0' && s[N]<='9')
{
r=r*10+(int)(s[N]-'0');
N++;
}
}
return r;
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
scanf("%s",&s);
printf("%d\n",eval());
fclose(stdin);
fclose(stdout);
return 0;
}