Pagini recente » Cod sursa (job #2881276) | Cod sursa (job #2290350) | Cod sursa (job #2319525) | Cod sursa (job #650163) | Cod sursa (job #2896971)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
string s;
int n, i = 0;
int factor();
int termen();
int expresie()
{
int sum = termen();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
i++, sum += termen();
else
i++, sum -= termen();
}
return sum;
}
int termen()
{
int p = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
i++, p *= factor();
else
i++, p /= factor();
}
return p;
}
int factor()
{
int val = 0, semn = 1;
while (s[i] == '-')
i++, semn = -semn;
if (s[i] == '(')
{
i++;
val = expresie();
i++;
return val * semn;
}
while (isdigit(s[i]))
{
val = val * 10 + s[i] - '0';
i++;
}
return val * semn;
}
int main()
{
in >> s;
out << expresie();
return 0;
}