Pagini recente » Cod sursa (job #48530) | Cod sursa (job #3220822) | Cod sursa (job #2519526) | Cod sursa (job #3131529) | Cod sursa (job #269298)
Cod sursa(job #269298)
#include <stdio.h>
#define Nmax 1001
char a[Nmax],*c;
int eval(),fact(),termen(),op1(),op2(),op3(),op4();
int op1(int a,int b)
{
return a*b;
}
int op2(int a,int b)
{
return a/b;
}
int op3(int a,int b)
{
return a+b;
}
int op4(int a,int b)
{
return a-b;
}
int formeaza()
{
int tmp=0;
while(*c>='0' && *c<='9')
{
tmp=tmp*10+(*c-'0');
++c;
}
return tmp;
}
int termen()
{
if(*c>='0' && *c<='9')
return formeaza();
++c;
return eval();
}
int fact()
{
int ret=termen();
while(*c=='*' || *c=='/')
{
if(*c=='*')
{
++c;
ret= op1(ret,termen());
}
else
{
++c;
ret= op2(ret,termen());
}
}
return ret;
}
int eval()
{
int ret=fact();
while(*c=='+' || *c=='-')
{
if(*c=='+')
{
++c;
ret= op3(ret,fact());
}
else
{
++c;
ret= op4(ret,fact());
}
}
++c;
return ret;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",a);
c=a;
printf("%d",eval());
return 0;
}