Pagini recente » Cod sursa (job #2491783) | Cod sursa (job #2925361) | Cod sursa (job #1129578) | Cod sursa (job #654394) | Cod sursa (job #3153501)
#include <fstream>
#include <string>
using namespace std;
int expr();
int term();
int factor();
string s;
int p = 0, sz;
int expr() {
int x = term();
while (p < sz && (s[p] == '+' || s[p] == '-')) {
p += 1;
if (s[p - 1] == '+') {
x += term();
}
else {
x -= term();
}
}
return x;
}
int term() {
int x = factor();
while (p < sz && (s[p] == '*' || s[p] == '/')) {
p += 1;
if (s[p - 1] == '*') {
x *= factor();
}
else {
x /= factor();
}
}
return x;
}
int factor() {
int x = 0;
if (s[p] == '(') {
++p;
x = expr();
++p;
}
else {
while (p < sz && ('0' <= s[p] && s[p] <= '9')){
x = x * 10 + (s[p] - '0');
p += 1;
}
}
return x;
}
int main() {
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin >> s;
sz = s.length();
fout << expr() << "\n";
fin.close();
fout.close();
return 0;
}