Pagini recente » Cod sursa (job #1916127) | Cod sursa (job #2494702) | Cod sursa (job #3269990) | Cod sursa (job #806713) | Cod sursa (job #3285565)
#include <fstream>
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
string s;
int k = 0;
int eval();
int fact();
int solve()
{
int nr = fact();
while (s[k] == '+' || s[k] == '-')
{
if (s[k] == '+')
++k, nr += fact();
else
++k, nr -= fact();
}
return nr;
}
int fact ()
{
int nr = eval();
while (s[k] == '*' || s[k] == '/')
{
if (s[k] == '*')
++k, nr *= eval();
else
++k, nr /= eval();
}
return nr;
}
int eval ()
{
int nr = 0;
if (s[k] == '(')
{
++k;
nr = solve();
++k;
}
else
{
while (isdigit(s[k]))
nr = nr * 10 + (s[k] - '0'), ++k;
}
return nr;
}
int main()
{
cin >> s;
cout << solve() << '\n';
return 0;
}