Pagini recente » Cod sursa (job #1183521) | Cod sursa (job #2663071) | Cod sursa (job #646961) | Cod sursa (job #2481921) | Cod sursa (job #3293956)
#include <bits/stdc++.h>
using namespace std;
string fileName = "evaluare";
ifstream fin(fileName + ".in");
ofstream fout(fileName + ".out");
typedef long long ll;
string s;
ll element(int &k);
ll factor(int &k);
ll suma(int &k);
ll suma(int &k) {
ll ret = factor(k);
while (k < s.length() && (s[k] == '+' || s[k] == '-')) {
if (s[k] == '+') {
k++;
ret += factor(k);
}
else if (s[k] == '-') {
k++;
ret -= factor(k);
}
}
return ret;
}
ll factor(int &k) {
int ret = element(k);
while (k < s.length() && (s[k] == '*' || s[k] == '/')) {
if (s[k] == '*') {
k++;
ret *= element(k);
}
else {
k++;
ret /= element(k);
}
}
return ret;
}
ll element(int &k) {
int ret = 0;
if (s[k] == '(') {
k++;
ret = suma(k);
k++;
return ret;
}
while (k < s.length() && isdigit(s[k]))
ret = ret * 10 + (s[k] - '0'), k++;
return ret;
}
int main() {
fin >> s;
int k = 0;
fout << suma(k);
return 0;
}