Pagini recente » Cod sursa (job #2110465) | Cod sursa (job #2799389) | Cod sursa (job #2982565) | Cod sursa (job #2632571) | Cod sursa (job #3260264)
#include <bits/stdc++.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int poz = 0;
string eval;
int factor();
int termen();
int evaluare()
{
int rez = termen();
while (eval[poz] == '-' || eval[poz] == '+')
{
if (eval[poz] == '-')
{
poz++;
rez -= termen();
}
else
if (eval[poz] == '+')
{
poz++;
rez += termen();
}
}
return rez;
}
int termen()
{
int fact = factor();
while (eval[poz] == '*' || eval[poz] == '/')
{
if (eval[poz] == '*')
{
poz++;
fact *= factor();
}
else
if (eval[poz] == '/')
{
poz++;
fact /= factor();
}
}
return fact;
}
int factor()
{
long long rez = 0;
if (eval[poz] == '(')
{
poz++;
rez = evaluare();
poz++;
}
else
{
while (eval[poz] >= '0' && eval[poz] <= '9')
{
rez = rez * 10 + (eval[poz] - '0');
poz++;
}
}
return rez;
}
int main()
{
f >> eval;
g << evaluare() << '\n';
f.close();
g.close();
return 0;
}