Pagini recente » Cod sursa (job #1076948) | Cod sursa (job #120969) | Cod sursa (job #1396052) | Cod sursa (job #143695) | Cod sursa (job #3214725)
#include <fstream>
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
string s;
int poz;
int fact();
int eval();
int term ()
{
int nr = fact();
while (s[poz] == '+' || s[poz] == '-')
{
if (s[poz] == '+')
++poz, nr += fact();
else
++poz, nr -= fact();
}
return nr;
}
int fact ()
{
int nr = eval();
while (s[poz] == '*' || s[poz] == '/')
{
if (s[poz] == '*')
++poz, nr *= eval();
else
++poz, nr /= eval();
}
return nr;
}
int eval ()
{
int nr = 0;
if (s[poz] == '(')
{
++poz;
nr = term();
++poz;
}
else
{
while (isdigit(s[poz]))
nr = nr * 10 + s[poz] - '0', ++poz;
}
return nr;
}
int main()
{
cin >> s;
cout << term() << '\n';
return 0;
}