Pagini recente » Cod sursa (job #2069001) | Cod sursa (job #2897876) | Cod sursa (job #3138450) | Cod sursa (job #1259684) | Cod sursa (job #1229731)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <fstream>
using namespace std;
int i;
string s;
int evaluate();
int term();
int fact();
int fact() {
int number = 0;
if (i < s.length() && s[i] == '(') {
i++;
number = evaluate();
i++;
} else {
while (i < s.length() && s[i] >= '0' && s[i] <= '9') {
number = number * 10 + s[i] - '0';
i++;
}
}
return number;
}
int term() {
int number = fact();
while (i < s.length() && (s[i] == '*' || s[i] == '/')) {
if (s[i] == '*') {
i++;
number *= fact();
} else {
i++;
number /= fact();
}
}
return number;
}
int evaluate() {
int number = term();
while (i < s.length() && (s[i] == '+' || s[i] == '-')) {
if (s[i] == '+') {
i++;
number += term();
} else {
i++;
number -= term();
}
}
return number;
}
int main() {
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f >> s;
g << evaluate();
return 0;
}