Pagini recente » Cod sursa (job #1075363) | Cod sursa (job #3289507) | Cod sursa (job #2623234) | Cod sursa (job #2656480) | Cod sursa (job #525486)
Cod sursa(job #525486)
#include<stdio.h>
#include<stdlib.h>
char s[100000],*p=s;
int eval();
int term();
int fact();
int eval()
{
int x=term();
while(*p=='+'||*p=='-')
switch(*p)
{
case '+':
{
p++;
x+=term();
break;
}
case '-':
{
p++;
x-=term();
break;
}
}
return x;
}
int term()
{
int x=fact();
while(*p=='*'||*p=='/')
switch(*p)
{
case '*':
{
p++;
x*=fact();
break;
}
case '/':
{
p++;
x/=fact();
break;
}
}
return x;
}
int fact()
{
int x=0;
if(*p=='(') {p++;x=eval();p++;}
while(*p>='0'&&*p<='9')
{
x=x*10+(int)*p-(int)'0';
p++;
}
return x;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(s);
printf("%d",eval());
return 0;
}