Pagini recente » Cod sursa (job #874207) | Cod sursa (job #197291) | Cod sursa (job #1240861) | Cod sursa (job #1824202) | Cod sursa (job #2206430)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int p(0);
int expresie();
int factor() {
int val(0), semn(1);
while (s[p] == '-') {
++p;
semn = -semn;
}
if (s[p] == '(') {
++p;
val = expresie();
++p;
return semn * val;
}
while (s[p] >= '0' && s[p] <= '9') {
val = val * 10 + s[p++] - '0';
}
return semn * val;
}
int termen() {
int sum(factor());
while (s[p] == '*' || s[p] == '/') {
if (s[p] == '*') {
++p;
sum *= factor();
}
else {
++p;
sum /= factor();
}
}
return sum;
}
int expresie() {
int sum(termen());
while (s[p] == '+' || s[p] == '-') {
if (s[p] == '+') {
++p;
sum += termen();
}
else {
--p;
sum -= termen();
}
}
return sum;
}
int main()
{
cin >> s;
cout << expresie();
return 0;
}