Pagini recente » Cod sursa (job #395613) | Cod sursa (job #783175) | Cod sursa (job #827080) | Cod sursa (job #2377101) | Cod sursa (job #1875628)
#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()
{
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();
}