Pagini recente » Profil WilagWeroWersenyzok | Cod sursa (job #615662) | Cod sursa (job #807001) | Cod sursa (job #3223737) | Cod sursa (job #1969088)
#include <fstream>
#include <cstring>
#define NMAX 100005
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char c[NMAX];
int pos = 0;
int evaluare();
int termen();
int factor();
int evaluare()
{
int ans = termen();
while (c[pos] == '+' || c[pos] == '-')
if (c[pos] == '+')
{
pos ++;
ans += termen();
}
else
{
pos ++;
ans -= termen();
}
return ans;
}
int termen()
{
int ans = factor();
while (c[pos] == '*' || c[pos] == '/')
if (c[pos] == '*')
{
pos ++;
ans *= factor();
}
else
{
pos ++;
ans /= factor();
}
return ans;
}
int factor()
{
int ans = 0;
if (c[pos] == '(')
{
pos ++;
ans = evaluare();
pos ++;
}
while (c[pos] >= '0' && c[pos] <= '9')
{
ans = ans * 10 + (c[pos] - '0');
pos ++;
}
return ans;
}
int main()
{
f.getline(c, NMAX - 2);
g << evaluare();
return 0;
}