Pagini recente » Cod sursa (job #48667) | Cod sursa (job #2827716) | Cod sursa (job #87784) | Cod sursa (job #2987181) | Cod sursa (job #395594)
Cod sursa(job #395594)
#include<stdio.h>
#define N 1<<17
char v[N];
char *p;
int parsare();
int termen();
int calcule()
{
int s=termen();
while(*p=='+'|| *p=='-')
if(*p=='+')
{++p;s=s+termen();}
else
if(*p=='-')
{++p;s=s-termen();}
return s;
}
int termen()
{
int t=parsare();
while(*p=='*' || *p=='/')
if(*p=='*')
{++p;t=t*parsare();}
else
if(*p=='/')
{++p;t=t/parsare();}
return t;
}
int parsare()
{
int semn=1;
int f=0;
if(*p=='(')
{
++p;
f=calcule();
++p;
return f;
}
if(*p=='-')
semn=-1;
while(*p>='0' && *p<='9')
{
f = f*10 +*p - '0';
++p;
}
return f*semn;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(v,N,stdin);
p=v;
int x=calcule();
printf("%d",x);
return 0 ;
}