Pagini recente » Cod sursa (job #473115) | Cod sursa (job #232631) | Cod sursa (job #716881) | Cod sursa (job #1346230) | Cod sursa (job #2568952)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
string s;
int p = 0;
int eval(), factor(), nr(), termen();
int nr ()
{
int rez = 0;
while (isdigit(s[p]))
rez = rez * 10 + s[p++]-'0';
return rez;
}
int factor ()
{
if (s[p]=='(')
{
p++;
eval();
}
else
return nr();
}
int termen ()
{
int r = factor ();
while (s[p]=='*' || s[p]=='/')
{
if (s[p]=='*')
p++,r *= factor();
else
p++,r /= factor();
}
return r;
}
int eval ()
{
int r = termen();
while (s[p]=='+' || s[p]=='-')
{
if (s[p]=='+')
p++, r += termen();
else
p++, r -= termen();
}
return r;
}
int main ()
{
in>>s;
out<<eval();
return 0;
}