Pagini recente » Cod sursa (job #246800) | Cod sursa (job #1168570) | Cod sursa (job #750072) | Cod sursa (job #70913) | Cod sursa (job #757898)
Cod sursa(job #757898)
#include <stdio.h>
char s[100005], *e;
long int term();
long int product();
long int expression();
int main()
{
FILE *in = fopen("evaluare.in", "r");
FILE *out = fopen("evaluare.out", "w");
fgets(s, 100002, in);
e = s;
fprintf(out, "%ld\n", expression());
fclose(in);
fclose(out);
return 0;
}
long int term()
{
long int nr;
nr = 0;
if(*e == '(')
{
e++;
nr = expression();
e++;
}
else while('0' <= *e && *e <= '9')
{
nr = nr * 10 + ((*e) - '0');
e++;
}
return nr;
}
long int product()
{
long int prod;
prod = term();
while(*e == '*' || *e == '/')
if(*e == '*')
{
e++;
prod *= term();
}
else
{
e++;
prod /= term();
}
return prod;
}
long int expression()
{
long int sum;
sum = product();
while(*e == '+' || *e == '-')
if(*e == '+')
{
e++;
sum += product();
}
else
{
e++;
sum -= product();
}
return sum;
}