Pagini recente » Cod sursa (job #1042163) | Istoria paginii runda/prolotomiada1/clasament | Cod sursa (job #252943) | Cod sursa (job #2736653) | Cod sursa (job #1476162)
#include <stdio.h>
#include <string.h>
char expr[100005];
int result,it,size;
int evaluate();
int atom()
{
int nmb=0;
if(expr[it]=='(')
{
it++;
nmb=evaluate();
it++;
}
else
{
nmb=expr[it++]-'0';
while(expr[it]>='0' && expr[it]<='9')
{
nmb*=10;
nmb+=expr[it++]-'0';
}
}
return nmb;
}
int term()
{
int res =atom();
while (expr[it]=='*' || expr[it]=='/')
{
if (expr[it++]=='/') res/=atom();
else res*=atom();
}
return res;
}
int evaluate()
{
int res=term();
while ( (expr[it]=='+' || expr[it]=='-') && expr[it]!='\0')
{
if (expr[it++]=='+') res+=term();
else res-=term();
}
return res;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",expr);
size=strlen(expr),result=0,it=0;
result = evaluate();
printf("%d",result);
}