Pagini recente » Cod sursa (job #780344) | Cod sursa (job #239349) | Cod sursa (job #3276199) | Cod sursa (job #2119597) | Cod sursa (job #269758)
Cod sursa(job #269758)
#include<stdio.h>
#define Nmax 100100
int eval(),termen(),fact(),nr();
char buff[Nmax], *p;
int op1(char op,int a,int b)
{
if (op == '*') return a*b;
return a/b;
}
int op2(char op,int a,int b)
{
if (op == '+') return a+b;
return a-b;
}
int nr()
{
int ret = 0;
while ('0' <= *p && *p <= '9')
{
ret = ret*10 + *p - '0';
++p;
}
return ret;
}
int termen()
{
if ('0' <= *p && *p <= '9')
return nr();
++p;
int ret = eval();
++p;
return ret;
}
int fact()
{
int ret = termen();
while (*p == '*' || *p=='/')
{
char op = *p;
++p;
ret = op1(op,ret,termen());
}
return ret;
}
int eval()
{
int ret = fact();
while (*p == '+' || *p == '-')
{
char op = *p;
++p;
ret = op2(op,ret,fact());
}
return ret;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
//fgets(buff,Nmax,stdin);
fread(buff,1,Nmax,stdin);
p = buff;
printf("%d\n",eval());
return 0;
}