Pagini recente » Cod sursa (job #1069573) | Cod sursa (job #1568467) | Cod sursa (job #404253) | Cod sursa (job #1479663) | Cod sursa (job #1875617)
#include <iostream>
using namespace std;
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 (s[i]<='9' && s[i]>='0')
r=r*10+s[i]-'0',i++;
return r;
}
main()
{
s="2*3/(2+1)+2*(1-5)*3-3*1+25";//=2*3/3+2*(-4)*3-3+25=2-3-24+25=-25+25=0
cout << eval();
}