Pagini recente » Cod sursa (job #367477) | Cod sursa (job #208116) | Cod sursa (job #305522) | Cod sursa (job #2732681) | Cod sursa (job #3293793)
#include <fstream>
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
int poz;
string s;
int term ();
int fact();
int eval ()
{
int nr = term();
while (s[poz] == '+' || s[poz] == '-')
{
if (s[poz] == '+')
++poz, nr += term();
else
++poz, nr -= term();
}
return nr;
}
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 = 0;
if (s[poz] == '(')
{
++poz;
nr = eval();
++poz;
}
else
{
while (isdigit(s[poz]))
nr = nr * 10 + (s[poz] - '0'), ++poz;
}
return nr;
}
int main()
{
cin >> s;
cout << eval() << '\n';
return 0;
}