Pagini recente » Cod sursa (job #644508) | Cod sursa (job #2848605)
#include <fstream>
#include <stack>
using namespace std;
const int NMAX = 100003;
char s[NMAX];
int i;//chinuri cu stiva poloneza, si tot recursivitate folosesc...
int term();
int fact();
int eval();
int fact()
{
if (s[i] == '(')
{
i++;
int val = eval();
i++;
return val;
}
int nr = 0;
for (;s[i] and s[i] >= '0' and s[i] <= '9'; i++)
nr = nr * 10 + s[i] - '0';
return nr;
}
int eval()
{
int a = term();
while (s[i] == '+' or s[i] == '-')
{
if (s[i] == '+')
{
i++;
a += term();
}
else
{
i++;
a -= term();
}
}
return a;
}
int term()
{
int a = fact();
while (s[i] == '*' or s[i] == '/')
{
if (s[i] == '*')
{
i++;
a *= fact();
}
else
{
i++;
a /= fact();
}
}
return a;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin >> s;
cout << eval();
}