Pagini recente » Cod sursa (job #392538) | Cod sursa (job #438524) | Cod sursa (job #1817689) | Cod sursa (job #2618525) | Cod sursa (job #1616672)
#include<stdio.h>
using namespace std;
FILE *in = fopen ("evaluare.in", "r"),
*out = fopen ("evaluare.out", "w");
const int N = 100002;
char v[N];
int n, p = 1;
int expresie();
int factor();
int termen();
int expresie ()
{
int x = termen ();
while (v[p] == '+' || v[p] == '-')
{
if (v[p] == '+')
{
p++;
x += termen ();
}
if (v[p] == '-')
{
p++;
x -= termen ();
}
}
return x;
}
int termen ()
{
int x = factor();
while (v[p] == '*' || v[p] == '/')
{
if (v[p] == '*')
{
p++;
x *= factor ();
}
if (v[p] == '/')
{
p++;
x /= factor ();
}
}
return x;
}
int factor ()
{
int x = 0, semn = 1;
if (v[p] == '-')
semn = -1;
if (v[p] == '(')
{
p++;
x = expresie();
p++;
return x * semn;
}
while (v[p] >= '0' && v[p] <= '9')
x = x * 10 + v[p++] - '0';
return x * semn;
}
int main ()
{
int x = fgetc (in);
while (x != EOF)
{
v[++n] = x;
x = fgetc (in);
}
fprintf (out, "%d", expresie());
return 0;
}