Pagini recente » Cod sursa (job #2597407) | Cod sursa (job #2986278) | Cod sursa (job #1688754) | Cod sursa (job #3130138) | Cod sursa (job #3197351)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int p = 0;
int expresie();
int factor() {
int r;
if (s[p] == '(') {
p++;
r = expresie();
p++;
}
else
for (r = 0; '0' <= s[p] and s[p] <= '9'; p++)
r = 10 * r + s[p] - '0';
return r;
}
int termen() {
int r = factor();
while (s[p] == '*' or s[p] == '/')
if (s[p] == '*') {
p++;
r *= factor();
}
else {
p++;
r /= factor();
}
return r;
}
int expresie() {
int r = termen();
while (s[p] == '+' or s[p] == '-')
if (s[p] == '+') {
p++;
r += termen();
}
else {
p++;
r -= termen();
}
return r;
}
int main() {
fin >> s;
fout << expresie();
}