Pagini recente » Cod sursa (job #986545) | Cod sursa (job #860148) | Cod sursa (job #3255537) | Cod sursa (job #3293167) | Cod sursa (job #145547)
Cod sursa(job #145547)
#include<stdio.h>
#include<ctype.h>
char expr[100100],*c;
long sol;
long sum();
long prod();
long par();
long num();
int main()
{
FILE *f,*g;f=fopen("evaluare.in","r");g=fopen("evaluare.out","w");
c=expr;fgets(c,100100,f);
sol=sum();
fprintf(g,"%ld\n",sol);fcloseall();return 0;
}
long sum()
{ long rez=prod();
for(;;){ if(*c=='+'){c++;rez+=prod();}
else if(*c=='-'){c++;rez-=prod();}
else return rez;
}
}
long prod()
{ long rez=par();
for(;;){ if(*c=='*'){c++;rez*=par();}
else if(*c=='/'){c++;rez/=par();}
else return rez;
}
}
long par()
{ long rez;
if(*c=='('){c++;rez=sum();c++;return rez;}
rez=num();return rez;
}
long num()
{ long rez=0;
while(isdigit(*c)){rez*=10;rez+=(long)(*c-'0');c++;}
return rez;
}