Pagini recente » Cod sursa (job #916751) | Cod sursa (job #193421) | Cod sursa (job #179779) | Cod sursa (job #1467967) | Cod sursa (job #3155235)
#include <bits/stdc++.h>
using namespace std;
long long factor(), termen();
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int poz = 0;
long long eval() {
long long r = termen();
while (s[poz] == '+' || s[poz] == '-') {
char c = s[poz];
poz++;
long long f = termen();
if (c == '+')
r += f;
else if (c == '-')
r -= f;
}
return r;
}
long long termen() {
long long r = factor();
while (s[poz] == '*' || s[poz] == '/') {
char c = s[poz];
poz++;
long long f = factor();
if (c == '*')
r *= f;
else if (c == '/')
r /= f;
}
return r;
}
long long factor() {
long long r = 0;
if (s[poz] == '(') {
poz++;
r = eval();
poz++;
} else
for (; s[poz] >= '0' && s[poz] <= '9'; poz++) {
r *= 10;
r += s[poz] - '0';
}
return r;
}
int main() {
fin >> s;
s += "$";
fout << eval();
}