Pagini recente » Cod sursa (job #57034) | Cod sursa (job #417123) | Cod sursa (job #2535358) | Cod sursa (job #1146834) | Cod sursa (job #1622395)
#include <fstream>
#include <cstdio>
using namespace std;
char buf[100002];
char *cptr;
int suma();
int produs();
int readNumber()
{
int res;
if (*cptr == '(')
{
++cptr;
res = suma();
++cptr;
} else {
res = (*cptr++) - '0';
while (*cptr >= '0' && *cptr <= '9')
{
res = res * 10 + (*cptr++) - '0';
}
}
return res;
}
int produs()
{
int res = readNumber();
while ((*cptr == '*') || (*cptr == '/'))
{
if (*cptr == '*')
{
cptr++;
res *= readNumber();
}
else if (*cptr == '/')
{
cptr++;
res /= readNumber();
}
}
return res;
}
int suma()
{
int res = produs();
while ((*cptr == '+') || (*cptr == '-'))
{
if (*cptr == '-')
{
cptr++;
res -= produs();
}
else if (*cptr == '+')
{
cptr++;
res += produs();
}
}
return res;
}
int main()
{
FILE * fin = fopen("evaluare.in", "r");
FILE * fout = fopen("evaluare.out", "w");
cptr = fgets(buf, 100002, fin);
fprintf(fout, "%d", suma());
fclose(fin);
fclose(fout);
return 0;
}