Pagini recente » Cod sursa (job #2543581) | Cod sursa (job #644193) | Cod sursa (job #2288061) | Cod sursa (job #1302156) | Cod sursa (job #2176017)
#include <fstream>
#define SMAX 100010
using namespace std;
FILE *fin, *fout;
int i;
char s[SMAX];
int factor();
int termen();
int expresie();
int main()
{
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fscanf(fin, "%s", s);
fprintf(fout, "%d\n", expresie());
fclose(fout);
return 0;
}
int factor()
{
int x = 0;
if (s[i] == '(')
{
i++;
x = expresie();
}
else
{
while (s[i] >= '0' && s[i] <= '9')
{
x = x * 10 + s[i] - '0';
i++;
}
}
return x;
}
int termen()
{
int f1 = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
i++;
f1 *= factor();
}
else
{
i++;
f1 /= factor();
}
}
return f1;
}
int expresie()
{
int t1 = termen();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
i++;
t1 += termen();
}
else
{
i++;
t1 -= termen();
}
}
i++;
return t1;
}