Pagini recente » Cod sursa (job #2553023) | Cod sursa (job #533758) | Istoria paginii runda/23dezile_3/clasament | Cod sursa (job #1455104) | Cod sursa (job #1220013)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int i;
string s;
int exp();
int fact() {
int r = 0;
if (i < s.length() && s[i] == '(') {
i++;
r = exp();
i++;
} else {
while (i < s.length() && s[i] >= '0' && s[i] <= '9') {
r = r * 10 + s[i] - '0';
i++;
}
}
return r;
}
int term() {
int r = fact();
while (i < s.length() && (s[i] == '*' || s[i] == '/')) {
if (s[i] == '*') {
i++;
r *= fact();
} else {
i++;
r /= fact();
}
}
return r;
}
int exp() {
int r = term();
while (i < s.length() && (s[i] == '+' || s[i] == '-')) {
if (s[i] == '+') {
i++;
r += term();
} else {
i++;
r -= term();
}
}
return r;
}
int main() {
f >> s;
g << exp();
return 0;
}