Pagini recente » Cod sursa (job #525835) | Cod sursa (job #1215754) | Istoria paginii runda/simularerunda3 | Cod sursa (job #872765) | Cod sursa (job #1839808)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int p=0;
int ev(); //evaluare
int fact(); //factor
int term(); //termen
int ev()
{
int r=fact();
while (p<=s.size() && (s[p]=='-' || s[p]=='+'))
p++,(s[p-1]=='+')? r+=fact(): r-=fact();
return r;
}
int fact()
{
int r=term();
while (p<=s.size() && (s[p]=='*' || s[p]=='/'))
p++,(s[p-1]=='*') ? r*=term() : r/=term();
return r;
}
int term()
{
int r=0;
if (s[p]=='(') p++,r=ev(),p++;
else
while (p<=s.size() && s[p]<='9' && s[p]>='0')
r=r*10+s[p]-'0',p++;
return r;
}
main()
{
cin >> s;
cout << ev();
}