Pagini recente » Cod sursa (job #1584780) | Cod sursa (job #1294838) | Cod sursa (job #362416) | Cod sursa (job #1110072) | Cod sursa (job #1294327)
#include <stdio.h>
#include <string.h>
#define NMAX 100023
FILE *fin, *fout;
char s[NMAX], *p;
int eval();
int termen();
int factor();
int main()
{
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fgets(s, NMAX, fin);
p = s;
fprintf(fout, "%d", eval());
fclose(fin);
fclose(fout);
return 0;
}
int eval()
{
int r = termen();
while(*p == '+' || *p == '-')
{
if(*p == '+') {p++;r += termen();}
else {p++;r-=termen();}
}
return r;
}
int termen()
{
int r = factor();
while(*p == '*' || *p == '/')
{
if(*p == '*') {p++;r*=factor();}
else {p++;r/=factor();}
}
return r;
}
int factor()
{
int r = 0;
if(*p == '(')
{
p++;
r = eval();
p++;
}
else
{
while(*p <= '9' && *p >= '0')
{
r = r*10 + *p - '0';
p++;
}
}
return r;
}