Pagini recente » Cod sursa (job #3203813) | Cod sursa (job #2335327) | Cod sursa (job #2702254) | Cod sursa (job #401492) | Cod sursa (job #2724886)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int LEN_MAX = 1e5 + 5;
char E[LEN_MAX];
int idx;
int Factor();
int Termen();
int Expresie()
{
idx++;
int ret = 0;
ret = Factor();
while (E[idx] == '+' || E[idx] == '-')
if (E[idx] == '+')
{
idx++;
ret += Factor();
}
else if (E[idx] == '-')
{
idx++;
ret -= Factor();
}
idx++;
return ret;
}
int Factor()
{
int ret = Termen();
while (E[idx] == '*' || E[idx] == '/')
if (E[idx] == '*')
{
idx++;
ret *= Termen();
}
else if (E[idx] == '/')
{
idx++;
ret /= Termen();
}
return ret;
}
int Termen()
{
if (E[idx] == '(')
return Expresie();
int ret = 0;
while ('0' <= E[idx] && E[idx] <= '9')
{
ret = ret * 10 + E[idx] - '0';
idx++;
}
return ret;
}
int main()
{
fin >> (E + 1);
E[0] = '(';
E[strlen(E)] = ')';
fout << Expresie() << "\n";
return 0;
}