Pagini recente » Clasament .com 2009, Runda 1 | Monitorul de evaluare | Cod sursa (job #488367) | Cod sursa (job #1274767) | Cod sursa (job #1875631)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int i=0;
int prod();
int term();
int eval()
{
int r=prod();
while (i<=s.size() && (s[i]=='+' || s[i]=='-'))
{
i++;
if (s[i-1]=='+') r+=prod(); else r-=prod();
}
return r;
}
int prod()
{
int r=term();
while (i<=s.size() && (s[i]=='*' || s[i]=='/'))
{
i++;
if (s[i-1]=='*') r*=term(); else r/=term();
}
return r;
}
int term()
{
int r=0;
if (s[i]=='(')
i++,r=eval(),i++;
else
while (i<=s.size() && (s[i]<='9' && s[i]>='0'))
r=r*10+s[i]-'0',i++;
return r;
}
main()
{
cin >> s;
cout << eval();
}