Pagini recente » Cod sursa (job #3157410) | Cod sursa (job #154167) | Cod sursa (job #1359308) | Cod sursa (job #1875075) | Cod sursa (job #267167)
Cod sursa(job #267167)
#include<stdio.h>
#define nmax 100010
FILE *f=fopen("evaluare.in","r"), *g=fopen("evaluare.out","w");
char s[nmax],*p;
long factor();
long termen();
long eval()
{
long r=termen();
while(*p=='+' || *p=='-')
{
if(*p=='+')
{
p++;
r+=termen();
}
else if(*p=='-')
{
p++;
r-=termen();
}
}
return r;
}
long termen()
{
long r=factor();
while(*p=='*' || *p=='/')
{
if(*p=='*')
{
p++;
r*=factor();
}
else if(*p=='/')
{
p++;
r/=factor();
}
}
return r;
}
long factor()
{
long r=0;
if(*p=='(') {p++; r=eval();p++;}
else
while(*p<='9' && *p>='0')
{
r=r*10+*p-'0';
p++;
}
return r;
}
int main()
{
fgets(s,nmax,f);p=s;
fprintf(g,"%ld\n",eval());
fclose(f);
fclose(g);
return 0;
}